Fiducial follow not working in ROS Noetic

I recently obtained a Magni with ROS Kinetic on the Raspberry Pi. I am able to run fiducial_follow in this configuration and the robot functions as expected. After consulting with the Ubiquity team I downloaded the beta ROS Noetic image and got the robot up and running with this. When I run the fiducial_follow demo on the Noetic setup the robot does not move. Full text from the terminal window is below, but I can see that the raspicam_node and aruco_detect are both working but fiducial_follow is not. The output changes as expected when I move a fiducial into and out of the field of view, which confirms that the robot sees the fiducial but is not able to execute any commands to follow.

FWIW I double-checked that I am up to date on all the ROS packages including ros-noetic-magni-demos and I was unable to locate a follow.py file anywhere on the system, though I’m not sure if this is relevant or not.

Full text of terminal output:

ubuntu@bladebot1:~$ roslaunch magni_demos fiducial_follow.launch
… logging to /home/ubuntu/.ros/log/7c481420-5ded-11ec-a2e3-072cbf09c59c/roslaunch-bladebot1-749.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://bladebot1.local:41207/

SUMMARY

PARAMETERS

  • /aruco_detect/adaptiveThreshWinSizeMax: 50
  • /aruco_detect/adaptiveThreshWinSizeMin: 10
  • /aruco_detect/adaptiveThreshWinSizeStep: 8
  • /aruco_detect/doCornerRefinement: False
  • /aruco_detect/do_pose_estimation: True
  • /aruco_detect/fiducial_len: 0.14
  • /aruco_detect/image_transport: compressed
  • /aruco_detect/publish_images: True
  • /fiducial_follow/target_fiducial: fid49
  • /raspicam_node/camera_frame_id: raspicam
  • /raspicam_node/camera_id: 0
  • /raspicam_node/camera_info_url: package://raspica…
  • /raspicam_node/camera_name: camerav2_410x308
  • /raspicam_node/enable_imv: False
  • /raspicam_node/enable_raw: False
  • /raspicam_node/exposure_mode: antishake
  • /raspicam_node/framerate: 30
  • /raspicam_node/height: 308
  • /raspicam_node/private_topics: True
  • /raspicam_node/shutter_speed: 0
  • /raspicam_node/width: 410
  • /rosdistro: noetic
  • /rosversion: 1.15.13

NODES
/
aruco_detect (aruco_detect/aruco_detect)
fiducial_follow (fiducial_follow/follow.py)
raspicam_node (raspicam_node/raspicam_node)

ROS_MASTER_URI=http://bladebot1:11311

process[raspicam_node-1]: started with pid [763]
process[aruco_detect-2]: started with pid [764]
ERROR: cannot launch node of type [fiducial_follow/follow.py]: fiducial_follow
ROS path [0]=/opt/ros/noetic/share/ros
ROS path [1]=/opt/ros/noetic/share
[ INFO] [1639603804.549831595]: splitter component done

[ INFO] [1639603804.635027950]: camera calibration URL: package://raspicam_node/camera_info/camerav2_410x308.yaml
[ INFO] [1639603804.678581235]: Camera successfully calibrated from default file
[ INFO] [1639603804.678724530]: using default calibration URL
[ INFO] [1639603804.679518741]: camera calibration URL: file:///home/ubuntu/.ros/camera_info/camerav2_410x308.yaml
[ INFO] [1639603804.679961235]: Unable to open camera calibration file [/home/ubuntu/.ros/camera_info/camerav2_410x308.yaml]
[ WARN] [1639603804.680082696]: Camera calibration file /home/ubuntu/.ros/camera_info/camerav2_410x308.yaml not found.
[ INFO] [1639603804.680493672]: No device specifc calibration found
[ INFO] [1639603804.750083855]: Starting video capture (410, 308, 80, 30)

[ INFO] [1639603804.751353060]: Video capture started

[ INFO] [1639603805.731373118]: Aruco detection ready
[ INFO] [1639603805.838054879]: Detected 0 markers
[ INFO] [1639603816.729775161]: Detected 1 markers
[ INFO] [1639603817.895262962]: Detected 0 markers
[ INFO] [1639603819.103512856]: Detected 1 markers
[ INFO] [1639603820.098308580]: Detected 0 markers
[ INFO] [1639603821.361437508]: Detected 1 markers
[ INFO] [1639603821.435051210]: Detected 0 markers
[ INFO] [1639603821.475757238]: Detected 1 markers
[ INFO] [1639603822.194245738]: Detected 0 markers
^C[aruco_detect-2] killing on exit
[raspicam_node-1] killing on exit
shutting down processing monitor…
… shutting down processing monitor complete
done

Thanks for finding this. We are getting closer all the time to releasing the Noetic image and things like this are on our list to fix before the Noetic release leaves the experimental stage and becomes a supported release. Thanks for finding this.

If this was helpful glad I could do it – better to know there’s an issue with the beta image than to be shown I’m making some silly mistake.

If I remember, the fiducial follow node was not included in the beta noetic image, and I don’t think it is on the 12-20 candidate either. The code was in a deprecated repository on the Ubiquity robotics GitHub called “demo”

I did get it running under beta after rebuilding, making in catkin. I think there were minor python syntax changes. IMHO, easiest to wait a bit. We are releasing improved code that makes navigation easier and while the fiducial follow will still be available, both visual and laser navigation will be possible and affordable alternatives. Also while fiducial follow was always just a demo program, our goal was to have a person detection or person follower for waiter or baggage porter applications.