Goals of the week

  • Solve Asynspinner issue in ROS2 to complete camviz

  • Refactor carviz

Update:

Turtlebot is not ready for dashing yet. Updates on Update turtlebot3 to sync ROS2 Dashing

So, we don’t have a mobile base robotics platform right now with both ROS1 And ROS2 support.

Carviz current code architecture

To work into a big complicated tool it is better to get a simple flow of components. Here, I created one from present code.

carvizarch

Most complicated part is the comm library which has to be changed with ros-ros2 interface. To maintain simplicity I have created the flow of all include and source files in comm library which will be used by carviz OR ANY OTHER APPLICATION IN JDEROBOT!!

carvizcomm

Rebuilding comm library for ROS1-ROS2

  • Last week I replaced comm::Communicator* jdrc for passing arguments from configuration file to int argc, char** argv, std::string nodeName, std::string topic It was working for camviz as it was comparatively an easier tool but carviz is little complex so it would be better to keep the earlier version and create a neww class for Communicator* jdrc without using ICE and COMM library to support ROS and ROS2.

Comparison of yaml file in camviz vs carviz:

Simpler yaml file in camviz faciliated easy usage of yaml file without the need of comm::Communicator* jdrc. But it would create problems or will be a dirty implementation for bigger tool like carviz.

Camviz.yaml

Server: 2 # Deactivate, 1: ROS , 2: ROS2
Proxy: "cameraA:tcp -h localhost -p 9999"
Format: RGB8
Topic: "/usb_cam/image_raw"
Name: cameraA
Fps: 30
NodeName: camViz

Carviz.yaml

  Motors:
    Server: 2 # 0 -> Deactivate, 1 -> Ice , 2 -> ROS
    Proxy: "Motors:default -h localhost -p 9999"
    Topic: "/mobile_base/commands/velocity"
    Name: carVizMotors
    maxV: 3
    maxW: 0.7

  Camera1:
    Server: 2 # 0 -> Deactivate, 1 -> Ice , 2 -> ROS
    Proxy: "CameraL:default -h localhost -p 9001"
    Format: RGB8
    Topic: "/camera/rgb/image_raw"
    Name: carVizCamera1

  Camera2:
    Server: 2 # 0 -> Deactivate, 1 -> Ice , 2 -> ROS
    Proxy: "CameraR:default -h localhost -p 9001"
    Format: RGB8
    Topic: "/camera/rgb/image_raw"
    Name: carVizCamera2

  Pose3D:
    Server: 2 # 0 -> Deactivate, 1 -> Ice , 2 -> ROS
    Proxy: "Pose3D:default -h localhost -p 9001"
    Topic: "/odom"
    Name: carVizPose3d

  Laser:
    Server: 2 # 0 -> Deactivate, 1 -> Ice , 2 -> ROS
    Proxy: "Laser:default -h localhost -p 9001"
    Topic: "/scan"
    Name: carVizLaser
  Vmax: 3
  Wmax: 0.7
  NodeName: carViz