4lhc / 100-days-of-ROS

100 Days of ROS Challenge

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

#100DaysOfROS


Progress


Goals

  • Improve ROS1 and roscpp proficiency.
  • Learn ROS2.
  • Learn to create gazebo plugins.
  • Sensor Fusion and SLAM with ROS.
  • Build a ROS enabled AMR

Day 0:

Tasks

  • Setup noetic & foxy
  • Setup neovim for ROS development
    • Tried to get vim-ros working.
    • Autocompletion with neovim and LSP

Progress

  • Autocompletion with neovim 0.5 failed. Will look at other options.

Day 1:

Tasks

  • Refresher: Watch Programming for Robotics (ROS) Course 1
    • ROS architecture and philosophy
    • ROS master and nodes
    • Topics and messages
    • Console commands
    • Catkin workspace and build system
    • Launch files
    • Gazebo

Progress

  • Tried out various console commands.
  • Created a launch file to visualize the robot in rviz - commit

Day 2:

Tasks

Progress


Day 3:

Tasks

Progress

  • Edit CmakeLists.txt to create multiple nodes.
  • Created subscriber and publisher nodes
  • Learned rosparam syntax.
  • Misc:
    • Setup ROS Qt Creator plug-in
    • Fixed neovim LSP completion.
    • Got vim-ros working in noetic

Day 4:

Tasks

Progress

  • Created a basic urdf (visual only) for 3-wheeled omnibot.

Day 5:

Tasks

Progress

  • Created macros for wheel link and joints - omnibot.

Day 6:

Tasks

Progress

  • Tried out different cmd line tf tools.
    • tf_monitor, tf_echo and view_frames
  • Quaternion Basics
    • Tested different quaternion operations -- Creating quaternion from rpy, rotations and conversion between tf2::Quaternion and geometry_msgs::Quaternion
  • Started writing a tf2_static_broadcaster
  • Today's Work

Day 7:

Tasks

  • tf2

Progress


Day 8:

Tasks

  • Today I planned to finish adding lidar and meshes to the robot urdf. But spend too much time on freecad trying to fix the origin of an imported wheels.

Progress


Day 9:

Tasks

  • Start work on CAD model

Progress

  • Created base and started assembly.
  • Fix origin errors with meshes


Day 10:

Tasks

Progress

  • Created a service client and service message.
  • Had trouble with empty service request [TODO]
  • Today's Work

Note

  • Designing the omnibot model requires a sizeable chunk of time, which I'm lacking this week. Hence, I decided to resume learning roscpp and put the robot design on hold for the week. The current CAD model is for visualization only and it is not what something I want it to be.

Day 11:

Tasks

  • Continue with ROS Services
    • Write a service server in roscpp

Progress

  • Created a service server.
  • Learned to create persistent connections to services
  • Different callback types that can be used for the ServiceServer: Functions, Class Methods and Functors
  • Create headers to pass meta information about the client.
  • Today's Work

Day 12:

Tasks

Progress

  • Created Timer callbacks of different flavours - Function, class methods.
  • Explored various members of struct TimerEvent - last_expected, last_real etc
  • Today's Work

Day 13:

Tasks

Progress


Day 14:

Tasks

  • Try out some ros packages and build something interesting
    • aruco_ros for 6-dof pose estimation.
    • follow_waypoints

Progress


Day 15:

Tasks

  • Create launch file for aruco marker publisher.
  • Write a node to check if a given list of markers are present in the world

Progress

  • Created a world with aruco markers
    • Generated aruco marker models to be added to the world
  • Launch file for marker_publisher
  • Started writing a marker counter node.

Day 16:

Tasks

  • Continue yesterday's work

Progress

  • Issues: After moving the marker models to local directory, the markers were visible in gazebo, but were not visible via camera plugin output. ie; the markers were invisible when the camera topic is visualized in rqt_gui
  • As a temporary fix, the models were moved to ~/.gazebo/models
  • Finished writing a node to check if a list of aruco markers are present in the world. link

Day 17:

Tasks

  • Actionlib
  • Write an actionclient for move_base to send waypoints to the robot.

Progress


Day 18:

Tasks

  • Finish writing action client for move_base
  • Load waypoints to rosparam server from yaml file.

Progress

  • Successfully completed waypoint mission with move_base action client. link
  • Created yaml file with params (waypoints and markers), loaded it into parameter server and read it from the node.
  • Fix inflation radius to prevent the robot from getting stuck in the maze world.

Day 19:

Tasks

Progress


Day 20:

Tasks

  • Today I try to setup and test rosserial on an arduino mega and a tiva evaluation board (TM4C123GXL).

Progress

  • Installed rosserial-arduino
    • In the IDE, library version 0.7.9 seems to work, while the latest verison (0.9.1) available fails to compile the sketch.
    • After uploading the sketch, rosrun rosserial_python serial_node.py /dev/ttyUSB0 was run to rosserial client application.

Day skipped due to academic work.


Day 21:

Tasks

  • actionlib - Write simpleActionServer with GoalCallBack.

Progress

  • I rewrote the action server script that I wrote on Day 19, with goalcallback. I struggled a bit with the roswiki tutorials on actionlib. Need to find a better resource to learn.
  • Note: In the streak tracker, today's commit will count towards the next day, as I am commiting after midnight.

Day 22:

Tasks

Progress

  • Started writing rviz marker visualisation

Day 23:

Tasks

Progress

  • Learned to add basic shapes to rviz

About

100 Days of ROS Challenge

License:MIT License


Languages

Language:Python 100.0%