NOTE: One of my complaints about ROS logging is the timestamp. It is a giant number of seconds with giant precision that is only useful after copying two of them into a calculator.
This is my helper function for adding local date-time to log strings:
I’m not solid on python modules either. But it the program file is in the same directory as the other scripts, I know you can import the function - I’ve done that before. Not as good as just having it universally available, but not too cumbersome. This is a short function, so just cutting-and-pasting it locally isn’t hard to manage, but for longer functions that gets tedious.
I didn’t realize you could designate a directory for ROS log files. Good to know.
/K
yes putting with the nodes allowed building with no errors, but it doesn’t get moved to the local site-package automatically so it fails when trying to run it.
I’m sure I will figure how to manage imports in ROS2 with a little more google-time. It seems like there’s multiple strategies.
I used to do that with VW beetles back in my college days. My dad an I would buy up junkers that nobody else wanted and cobble together cars that worked.
I named them too because they had character.
My favorite was “The Motley Crew” - every part was from a different model year!
And I’m feeling like a cave-man working on the battery’s meter while you guys whip-up fancy robots with spinning LIDAR auto-mapping and embedded cyclotrons looking for the Higgs Boson with Python scripts to filter out noise.
Yikes - I looked at your question and could barely follow it. I think I’ll definitely work on getting things going well in ROS1 before jumping to ROS2.
/K
PS - I had actually never heard that song before. It’s hilarious.
I really should have just been satisfied to “follow someone that knows” and done ROS1. I wanted to be “up with the latest” and that meant either
buying turtlebot3 burger which is already ROS2-ified, and knowing nothing about the platform,
or
buying a second GoPiGo3 that I have invested 5 years in, and creating ROS2-GoPiGo3.
(It is interesting that @brjapon disappeared from this forum in April after publishing the book, and disappeared from Twitter mid-December 2020. Packt publishing gave me a like when I responded to ROS.org asking “What’s holding you back from ROS2?” with “A ROS2 version of HandsOn ROS For Robotics Programming”, but I really can’t expect anything more from them.)
I’m delighted that you are trailblazing. Too bad about @brjapon. I’d certainly buy a second version of the book just to support the work, but just a good github repository would be fine.
CMakeLists.txt is definitely one of the things I’m weak on. Since I program almost exclusively in Python, I find make files daunting.
/K
I created my own “minimal GoPiGo3” URDF file and finally got the joint_state_publisher happy (not sure what, why, or how, but it stopped complaining and started broadcasting something the robot_state_publisher wants.
Next have to figure out how to get the joint_state_publisher_gui to show up.
Also my launch file doesn’t support the book’s parameters and arguments yet.
Wow - that is real progress.
On a side note, and I suspect you know this already, but on the off chance you don’t. You can close the Views window on the right side. I think you can un-check it in the Panels menu, or just click the tiny arrow on the right side of the image window. For me it gives more space for the image, and I’ve never changed the views (other than just playing around to look at the options). But others must use it or it wouldn’t be there.
/K
I know that I have absolutely no right to an opinion, but one thing strikes me:
It shouldn’t be that complicated.
Given the list above, and the other things you’ve mentioned, I see two possible conclusions:
There is some fundamental idea or library that simplifies everything, (as in easygopigo), that you’ve missed.
The people who developed ROS-2 are a bunch of idiot wankers who have no 'naffing clue - and have completely lost sight of The Tao of Programming by making things considerably more complex than necessary.
I also wonder if they deliberately decided to cut their entire user-base off at the knees by completely destroying any possibility of code migration or backwards compatibility?
There is a third: ROS1 was too simplified and slow (in the distributed agent communication capability) so they upped the complexity to meet the next-gen robotic sense, command and control, abandoning backward compatibility to allow unlimited creative license.
They did provide something they call the “ROS1 Bridge” that will link a set of bots running ROS1 to coexist with ROS2 bots, but even that is not high priority versus creating the new ROS2 features.