linorobot2 is a ROS2 port of the linorobot package

Overview

linorobot2

linorobot2

linorobot2 is a ROS2 port of the linorobot package. If you're planning to build your own custom ROS2 robot (2WD, 4WD, Mecanum Drive) using accessible parts, then this package is for you. This repository contains launch files to easily integrate your DIY robot with Nav2 and a simulation pipeline to run and verify your experiments on a virtual robot in Gazebo.

Once the robot's URDF has been configured in linorobot2_description package, users can easily switch between booting up the physical robot and spawning the virtual robot in Gazebo.

linorobot2_architecture

Assuming you're using one of the tested sensors, linorobot2 automatically launches the necessary hardware drivers, with the topics being conveniently matched with the topics available in Gazebo. This allows users to define parameters for high level applications (ie. Nav2 SlamToolbox, AMCL) that are common to both virtual and physical robots.

The image below summarizes the topics available after running bringup.launch.py. linorobot2_microcontroller

An in-depth tutorial on how to build the robot is available in linorobot2_hardware.

Installation

This package requires ros-foxy or ros-galactic. If you haven't installed ROS2 yet, you can use this installer script that has been tested to work on x86 and ARM based dev boards ie. Raspberry Pi4/Nvidia Jetson Series.

1. Robot Computer - linorobot2 Package

The easiest way to install this package on the robot computer is to run the bash script found in this package's root directory. It will install all the dependencies, set the ENV variables for the robot base and sensors, and create a linorobot2_ws (robot_computer_ws) on the robot computer's $HOME directory. If you're using a ZED camera with a Jetson Nano, you must create a custom Ubuntu 20.04 image for CUDA and the GPU driver to work. Here's a quick guide on how to create a custom image for Jetson Nano.

source /opt/ros/
   
    /setup.bash
cd /tmp
wget https://raw.githubusercontent.com/linorobot/linorobot2/master/install_linorobot2.bash
bash install_linorobot2.bash 
     
      
      
       
source ~/.bashrc

      
     
    
   

robot_type:

  • 2wd - 2 wheel drive robot.
  • 4wd - 4 wheel drive robot.
  • mecanum - Mecanum drive robot.

laser_sensor:

Sensors marked with an asterisk are depth sensors. If a depth sensor is used as a laser sensor, the launch files will run depthimage_to_laserscan to convert the depth sensor's depth image to laser scans.

depth_sensor:

Alternatively, follow this guide to do the installation manually.

2. Host Machine / Development Computer - Gazebo Simulation (Optional)

This step is only required if you plan to use Gazebo later. This comes in handy if you want to fine-tune parameters (ie. SLAM Toolbox, AMCL, Nav2) or test your applications on a virtual robot.

2.1 Install linorobot2 Package

Install linorobot2 package on the host machine:

cd 
   
    
git clone https://github.com/linorobot/linorobot2 src/linorobot2
rosdep update && rosdep install --from-path src --ignore-src -y --skip-keys microxrcedds_agent --skip-keys micro_ros_agent
colcon build
source install/setup.bash

   
  • microxrcedds_agent and micro_ros_agent dependency checks are skipped to prevent this issue of finding its keys. This means that you have to always add --skip-keys microxrcedds_agent --skip-keys micro_ros_agent whenever you have to run rosdep install on the ROS2 workspace where you installed linorobot2.

2.2 Define Robot Type

Set LINOROBOT2_BASE env variable to the type of robot base used. Available env variables are 2wd, 4wd, and mecanum. For example:

> ~/.bashrc source ~/.bashrc ">
echo "export LINOROBOT2_BASE=2wd" >> ~/.bashrc
source ~/.bashrc

You can skip the next step (Host Machine - RVIZ Configurations) since this package already contains the same RVIZ configurations to visualize the robot.

3. Host Machine - RVIZ Configurations

Install linorobot2_viz package to visualize the robot remotely specifically when creating a map or initializing/sending goal poses to the robot. The package has been separated to minimize the installation required if you're not using the simulation tools on the host machine.

cd 
   
    
git clone https://github.com/linorobot/linorobot2_viz src/linorobot2_viz
rosdep update && rosdep install --from-path src --ignore-src -y 
colcon build
source install/setup.bash

   

Hardware and Robot Firmware

All the hardware documentation and robot microcontroller's firmware can be found here.

URDF

1. Define robot properties

linorobot2_description package has parameterized xacro files that can help you kickstart writing the robot's URDF. Open .properties.urdf.xacro in linorobot2_description/urdf directory and change the values according to the robot's specification/dimensions. All pose definitions must be measured from the base_link (center of base) and wheel positions (ie wheel_pos_x) are referring to wheel 1.

For custom URDFs, you can change the urdf_path in description.launch.py found in linorobot2_description/launch directory.

Robot Orientation:

--------------FRONT--------------

WHEEL1 WHEEL2 (2WD/4WD)

WHEEL3 WHEEL4 (4WD)

--------------BACK--------------

Build the robot computer's workspace to load the new URDF:

cd 
   
    
colcon build

   

The same changes must be made on the host machine's .properties.urdf.xacro if you're simulating the robot in Gazebo. Remember to also build the host machine's workspace after editing the xacro file.

cd 
   
    
colcon build

   

2. Visualize the newly created URDF

Robot Computer:

ros2 launch linorobot2_description description.launch.py

Optional parameters for simulation on host machine:

  • rviz - Set to true to visualize the robot in rviz2 and only if you're configuring the URDF from the host machine. For example:

      ros2 launch linorobo2_description description.launch.py rviz:=true
    

Host Machine:

The rviz argument on description.launch.py won't work on headless setup but you can visualize the robot remotely from the host machine:

ros2 launch linorobot2_viz robot_model.launch.py

Quickstart

All commands below are to be run on the robot computer unless you're running a simulation or rviz2 to visualize the robot remotely from the host machine. SLAM and Navigation launch files are the same for both real and simulated robots in Gazebo.

1. Booting up the robot

1.1a Using a real robot:

ros2 launch linorobot2_bringup bringup.launch.py

Optional parameters:

  • base_serial_port - Serial port of the robot's microcontroller. The assumed value is /dev/ttyACM0. Otherwise, change the default value to the correct serial port. For example:

    ros2 launch linorobot2_bringup bringup.launch.py base_serial_port:=/dev/ttyACM1
    
  • joy - Set to true to run the joystick node in the background. (Tested on Logitech F710).

Always wait for the microROS agent to be connected before running any application (ie. creating a map or autonomous navigation). Once connected, the agent will print:

| Root.cpp             | create_client     | create
| SessionManager.hpp   | establish_session | session established

The agent needs a few seconds to get reconnected (less than 30 seconds). Unplug and plug back in the microcontroller if it takes longer than usual.

1.1b Using Gazebo:

ros2 launch linorobot2_bringup gazebo.launch.py

linorobot2_bringup.launch.py or gazebo.launch.py must always be run on a separate terminal before creating a map or robot navigation when working on a real robot or gazebo simulation respectively.

2. Controlling the robot

2.1 Keyboard Teleop

Run teleop_twist_keyboard to control the robot using your keyboard:

ros2 run teleop_twist_keyboard teleop_twist_keyboard

Press:

  • i - To drive the robot forward.
  • , - To reverse the robot.
  • j - To rotate the robot CCW.
  • l - To rotate the robot CW.
  • shift + j - To strafe the robot to the left (for mecanum robots).
  • shift + l - To strafe the robot to the right (for mecanum robots).
  • u / o / m / . - Used for turning the robot, combining linear velocity x and angular velocity z.

2.2 Joystick

Pass joy argument to the launch file and set it to true to enable the joystick. For example:

ros2 launch linorobot2_bringup bringup.launch.py joy:=true
  • On F710 Gamepad, the top switch should be set to 'X' and the 'MODE' LED should be off.

Press Button/Move Joystick:

  • RB (First top right button) - Press and hold this button while moving the joysticks to enable control.
  • Left Joystick Up/Down - To drive the robot forward/reverse.
  • Left Joystick Left/Right - To strafe the robot to the left/right.
  • Right Joystick Left/Right - To rotate the robot CW/CCW.

3. Creating a map

3.1 Run SLAM Toolbox:

ros2 launch linorobot2_navigation slam.launch.py

Optional parameters for simulation on host machine:

For example:

ros2 launch linorobot2_navigation slam.launch.py rviz:=true sim:=true
  • sim - Set to true for simulated robots on the host machine. Default value is false.
  • rviz - Set to true to visualize the robot in RVIZ. Default value is false.

3.1 Run rviz2 to visualize the robot from host machine:

The rviz argument on slam.launch.py won't work on headless setup but you can visualize the robot remotely from the host machine:

ros2 launch linorobot2_viz slam.launch.py

3.2 Move the robot to start mapping

Drive the robot manually until the robot has fully covered its area of operation. Alternatively, the robot can also receive goal poses to navigate autonomously while mapping:

ros2 launch nav2_bringup navigation_launch.py
  • Pass use_sim_time:=true to the launch file when running in simulation.

More info here.

3.3 Save the map

cd linorobot2/linorobot2_navigation/maps
ros2 run nav2_map_server map_saver_cli -f 
   
     --ros-args -p save_map_timeout:=10000

   

4. Autonomous Navigation

4.1 Load the map you created:

Open linorobot2/linorobot2_navigation/launch/navigation.launch.py and change MAP_NAME to the name of the newly created map. Build the robot computer's workspace once done:

cd 
   
    
colcon build

   

Alternatively, map argument can be used when launching Nav2 (next step) to dynamically load map files. For example:

ros2 launch linorobot2_navigation navigation.launch.py map:=
   
    /
    
     .yaml

    
   

4.2 Run Nav2 package:

ros2 launch linorobot2_navigation navigation.launch.py

Optional parameter for loading maps:

  • map - Path to newly created map .

Optional parameters for simulation on host machine:

  • sim - Set to true for simulated robots on the host machine. Default value is false.
  • rviz - Set to true to visualize the robot in RVIZ. Default value is false.

4.3 Run rviz2 to visualize the robot from host machine:

The rviz argument for navigation.launch.py won't work on headless setup but you can visualize the robot remotely from the host machine:

ros2 launch linorobot2_viz navigation.launch.py

Check out Nav2 tutorial for more details on how to initialize and send goal pose.

Troubleshooting Guide

1. The changes I made on a file are not taking effect on the package configuration/robot's behavior.

  • You need to build your workspace every time you modify a file:

    cd 
         
          
    colcon build
    #continue what you're doing...
    
         

2. [slam_toolbox]: Message Filter dropping message: frame 'laser'

  • Try to up transform_timeout by 0.1 in linorobot2_navigation/config/slam.yaml until the warning is gone.

3. target_frame - frame does not exist

  • Check your .properties.urdf.xacro and ensure that there's no syntax errors or repeated decimal points.

Useful Resources:

https://navigation.ros.org/setup_guides/index.html

http://gazebosim.org/tutorials/?tut=ros2_overview

Comments
  • URDF Stage of Install: Joint_state_publisher waiting for robot_description

    URDF Stage of Install: Joint_state_publisher waiting for robot_description

    I am getting stuck at the "Visualize the newly created URDF" portion. I am able to edit my description file and colcon build, but then when I launch via robot computer I get stuck at attached screen.

    Further steps like launching robot and conctrolling via keyboard works, but URDF and SLAM all get stuck waiting for this robot_description topic.

    "joint_state_publisher: Waiting for robot_description to be published on the robot_description topic"

    Any ideas on a resolution, been looking up for a while and reinstalled joint state publisher with no luck. My RVIZ on host computer comes up but is empty and I see the robot_description as an unvisualizable topic.

    Thanks Capture

    opened by philmurp 29
  • getting error in ekf

    getting error in ekf

    I'm not using depth sensor.

    [ekf_node-2] Warning: Invalid frame ID "base_footprint" passed to canTransform argument target_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp [ekf_node-2] Warning: Invalid frame ID "base_footprint" passed to canTransform argument target_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp [ekf_node-2] Warning: Invalid frame ID "imu_link" passed to canTransform argument source_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp [ekf_node-2] Warning: Invalid frame ID "imu_link" passed to canTransform argument source_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp [ekf_node-2] Warning: Invalid frame ID "imu_link" passed to canTransform argument source_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp [ekf_node-2] Warning: Invalid frame ID "imu_link" passed to canTransform argument source_frame - frame does not exist [ekf_node-2] at line 133 in /tmp/binarydeb/ros-foxy-tf2-0.13.12/src/buffer_core.cpp

    opened by raidhu 24
  • micro-ros issue in Galactic

    micro-ros issue in Galactic

    Jetson Nano ROS2 Galactic

    Teensy goes to the error loop (led flashes two times) or, sometimes, micro-ros agent restarts when the robot receives the goal.

    Seems there isn't such error in ROS2 Foxy.

    I'll really appreciate an assistance to fix it.

    opened by crimean7 10
  • No transform from [...] to [map]

    No transform from [...] to [map]

    I run: ros2 launch linorobot2_bringup bringup.launch.py ros2 run teleop_twist_keyboard teleop_twist_keyboard ros2 launch linorobot2_navigation slam.launch.py rviz:=true to slam, but I the transform wasn't working. And rviz has a lot of errors displayed all related to transform. image image image

    I'm new to ROS2 and wasn't able to Identify and fix the problems...

    URDF looks ok and working: image

    Topic list:

    /clicked_point
    /cmd_vel
    /diagnostics
    /goal_pose
    /imu/data
    /initialpose
    /joint_states
    /map
    /map_metadata
    /map_updates
    /odom
    /odom/unfiltered
    /parameter_events
    /robot_description
    /rosout
    /scan
    /set_pose
    /slam_toolbox/feedback
    /slam_toolbox/graph_visualization
    /slam_toolbox/scan_visualization
    /slam_toolbox/update
    /tf
    /tf_static
    
    • System info System config: 2wd System: Jetson nano OS: Ubuntu 20.04 from Qengineering Base board: Teency 4.0 Lidar: Rplidar IMU: MPU-9250 Motor driver: L298N
    opened by EnderDragonEP 6
  • "Odom frame not found" when launching navigation and joint state publisher stuck on waiting to publish robot_description topic

    Hi, I'm following the quick start linorobot2 and run exact the same install command except replace "micro-ros-agent" to my own node to process "/cmd_vel" topics. However, the following two message keeping showing up and the rviz keeping showing no transform from all part to "map" topics.

    When I run nav2 package,

    Screenshot from 2022-08-31 18-30-42

    When I run bring_up.

    Screenshot from 2022-08-31 18-34-14

    Screenshot from 2022-08-31 18-41-36

    Any help is appreciated!!!

    Thanks in advance!!!

    opened by zyongye 6
  • linorobot2_viz missing Galactic branch, and realsense issue

    linorobot2_viz missing Galactic branch, and realsense issue

    Hi

    Installed Galactic last night :-) git clone -b $ROS_DISTRO https://github.com/linorobot/linorobot2_viz src/linorobot2_viz fails. removed -b $ROS_DISTRO and it installs. After Linorobot2 installation i found that realsense udev rules was missing, downloaded and fixed. Now Robot runs perfectly as a 2wd with rplidar and also with realsense as lidar. But using both rplidar and realsense only lidar seems to be used. Rviz shows no data in "bumper hit" , is there any tricks to get voxel layer / pointcloud working ?

    Best regards

    opened by Sylvania2 6
  • Mapping not stable in Linorbot

    Mapping not stable in Linorbot

    Screenshot from 2022-04-07 23-05-24 My robot is working normally but even after modify eky.yaml and all suggested problems i am not able receive the map properly

    Warning: Invalid frame ID "map" passed to canTransform argument target_frame - frame does not exist
    [rviz2-1]          at line 156 in /tmp/binarydeb/ros-galactic-tf2-0.17.2/src/buffer_core.cpp
    [rviz2-1] Warning: Invalid frame ID "base_link" passed to canTransform argument source_frame - frame does not exist
    [rviz2-1]          at line 156 in /tmp/binarydeb/ros-galactic-tf2-0.17.2/src/buffer_core.cpp
    [rviz2-1] Warning: Invalid frame ID "camera_depth_link" passed to canTransform argument source_frame - frame does not exist
    [rviz2-1]          at line 156 in /tmp/binarydeb/ros-galactic-tf2-0.17.2/src/buffer_core.cpp
    

    in ros2 launch linorobot2_viz slam.launch.py

    [INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2022-04-07-17-29-39-629182-ubuntu-5607
    [INFO] [launch]: Default logging verbosity is set to INFO
    [INFO] [async_slam_toolbox_node-1]: process started with pid [5609]
    [async_slam_toolbox_node-1] [INFO] [1649352580.291677050] [slam_toolbox]: Node using stack size 40000000
    [async_slam_toolbox_node-1] [INFO] [1649352580.769956287] [slam_toolbox]: Using solver plugin solver_plugins::CeresSolver
    [async_slam_toolbox_node-1] [INFO] [1649352580.773386071] [slam_toolbox]: CeresSolver: Using SCHUR_JACOBI preconditioner.
    [async_slam_toolbox_node-1] [WARN] [1649352580.819195176] [slam_toolbox]: maximum laser range setting (20.0 m) exceeds the capabilities of the used Lidar (12.0 m)
    [async_slam_toolbox_node-1] Registering sensor: [Custom Described Lidar]
    

    in ros2 launch linorobot2_navigation slam.launch.py

    [INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2022-04-07-17-28-15-296529-ubuntu-5247
    [INFO] [launch]: Default logging verbosity is set to INFO
    [INFO] [micro_ros_agent-1]: process started with pid [5250]
    [INFO] [ekf_node-2]: process started with pid [5252]
    [INFO] [joint_state_publisher-3]: process started with pid [5254]
    [INFO] [robot_state_publisher-4]: process started with pid [5256]
    [INFO] [rplidar_composition-5]: process started with pid [5258]
    [micro_ros_agent-1] [1649352497.176002] info     | TermiosAgentLinux.cpp | init                     | running...             | fd: 3
    [micro_ros_agent-1] [1649352497.176696] info     | Root.cpp           | set_verbose_level        | logger setup           | verbose_level: 4
    [rplidar_composition-5] [INFO] [1649352497.237481509] [rplidar_composition]: RPLIDAR running on ROS 2 package rplidar_ros. SDK Version: '1.12.0'
    [robot_state_publisher-4] Link base_link had 7 children
    [robot_state_publisher-4] Link camera_link had 1 children
    [robot_state_publisher-4] Link camera_depth_link had 0 children
    [robot_state_publisher-4] Link front_left_wheel_link had 0 children
    [robot_state_publisher-4] Link front_right_wheel_link had 0 children
    [robot_state_publisher-4] Link imu_link had 0 children
    [robot_state_publisher-4] Link laser had 0 children
    [robot_state_publisher-4] Link rear_left_wheel_link had 0 children
    [robot_state_publisher-4] Link rear_right_wheel_link had 0 children
    [robot_state_publisher-4] [INFO] [1649352497.270687730] [robot_state_publisher]: got segment base_footprint
    [robot_state_publisher-4] [INFO] [1649352497.271041504] [robot_state_publisher]: got segment base_link
    [robot_state_publisher-4] [INFO] [1649352497.271124707] [robot_state_publisher]: got segment camera_depth_link
    [robot_state_publisher-4] [INFO] [1649352497.271164040] [robot_state_publisher]: got segment camera_link
    [robot_state_publisher-4] [INFO] [1649352497.271197021] [robot_state_publisher]: got segment front_left_wheel_link
    [robot_state_publisher-4] [INFO] [1649352497.271229687] [robot_state_publisher]: got segment front_right_wheel_link
    [robot_state_publisher-4] [INFO] [1649352497.271260891] [robot_state_publisher]: got segment imu_link
    [robot_state_publisher-4] [INFO] [1649352497.271293742] [robot_state_publisher]: got segment laser
    [robot_state_publisher-4] [INFO] [1649352497.271324779] [robot_state_publisher]: got segment rear_left_wheel_link
    [robot_state_publisher-4] [INFO] [1649352497.271356297] [robot_state_publisher]: got segment rear_right_wheel_link
    [micro_ros_agent-1] [1649352498.157387] info     | Root.cpp           | create_client            | create                 | client_key: 0x5E218E29, session_id: 0x81
    [micro_ros_agent-1] [1649352498.157540] info     | SessionManager.hpp | establish_session        | session established    | client_key: 0x5E218E29, address: 0
    [micro_ros_agent-1] [1649352498.200126] info     | ProxyClient.cpp    | create_participant       | participant created    | client_key: 0x5E218E29, participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.205602] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x5E218E29, topic_id: 0x000(2), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.210683] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x5E218E29, publisher_id: 0x000(3), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.216667] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x5E218E29, datawriter_id: 0x000(5), publisher_id: 0x000(3)
    [micro_ros_agent-1] [1649352498.222560] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x5E218E29, topic_id: 0x001(2), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.227583] info     | ProxyClient.cpp    | create_publisher         | publisher created      | client_key: 0x5E218E29, publisher_id: 0x001(3), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.233474] info     | ProxyClient.cpp    | create_datawriter        | datawriter created     | client_key: 0x5E218E29, datawriter_id: 0x001(5), publisher_id: 0x001(3)
    [micro_ros_agent-1] [1649352498.238540] info     | ProxyClient.cpp    | create_topic             | topic created          | client_key: 0x5E218E29, topic_id: 0x002(2), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.243687] info     | ProxyClient.cpp    | create_subscriber        | subscriber created     | client_key: 0x5E218E29, subscriber_id: 0x000(4), participant_id: 0x000(1)
    [micro_ros_agent-1] [1649352498.249762] info     | ProxyClient.cpp    | create_datareader        | datareader created     | client_key: 0x5E218E29, datareader_id: 0x000(6), subscriber_id: 0x000(4)
    [joint_state_publisher-3] [INFO] [1649352498.813956023] [joint_state_publisher]: Waiting for robot_description to be published on the robot_description topic...
    [rplidar_composition-5] [INFO] [1649352499.761990349] [rplidar_composition]: RPLIDAR S/N: 7FF6EDF9C7E29BCEA7E39EF2EF254304
    [rplidar_composition-5] [INFO] [1649352499.762214995] [rplidar_composition]: Firmware Ver: 1.29
    [rplidar_composition-5] [INFO] [1649352499.762313624] [rplidar_composition]: Hardware Rev: 7
    [rplidar_composition-5] [INFO] [1649352499.763890090] [rplidar_composition]: RPLidar health status : '0'
    [rplidar_composition-5] [INFO] [1649352500.307478918] [rplidar_composition]: current scan mode: Sensitivity, max_distance: 12.0 m, Point number: 7.9K , angle_compensate: 2, flip_x_axis 0
    
    

    in ros2 launch linorobot2_bringup bringup.launch.py

    opened by vinayaksandilya 5
  • Package 'micro_ros_agent' not found

    Package 'micro_ros_agent' not found

    The testing and motor running worked fine, but now I'm trying to get it to drive around, and this error comes up.

    Galactic, Ubuntu 20.02, Raspi, Teensy 4.0, L298N motor controllers.

    I still have it connected to screen, keyboard and mouse. Does that cause it?

    opened by Russ76 5
  • Colcon Build issue

    Colcon Build issue

    Some assistance please.I am unable to compile during colcon build, I keep getting the following issue. Trying to install with zed2i ubuntu 20 on jetson nano image. Thank You

    /home/jetson/dev_ws/src/image_common/camera_info_manager/src/camera_info_manager.cpp:46:10: fatal error: rcpputils/env.hpp: No such file or directory #include "rcpputils/env.hpp" ^~~~~~~~~~~~~~~~~~~ compilation terminated. make[2]: *** [CMakeFiles/camera_info_manager.dir/build.make:63: CMakeFiles/camera_info_manager.dir/src/camera_info_manager.cpp.o] Error 1 make[1]: *** [CMakeFiles/Makefile2:78: CMakeFiles/camera_info_manager.dir/all] Error 2 make: *** [Makefile:141: all] Error 2

    Failed <<< camera_info_manager [5.59s, exited with code 2] Aborted <<< turtlesim [13.4s]
    Aborted <<< zed_components [7.67s]

    Summary: 2 packages finished [14.5s] 1 package failed: camera_info_manager 2 packages aborted: turtlesim zed_components 2 packages had stderr output: camera_info_manager zed_components 3 packages not processed

    opened by longwm 5
  • Is there anyway that i can adapt this for a 6 wheels

    Is there anyway that i can adapt this for a 6 wheels "lookalike" mars rover?

    As per title i've almost finished the build of a 6 wheels rover, rocker bogie joint and the whole shabam. Quite an interesting project, and after the failed SpotMini [which i'm planning to go back on sometime in the future] i think i'm very close to the finish line with this one. The one thing though, as it is an adaptation i've decided to simplify it a bit, by not adding the 4 rotating front and back wheels, i've preferred a simpler setup.

    I was very eager to make this project autonomous, and after finding linorobot, i thought it would have been easier, the problem is that you've only designed this for 2 or 4 wheels; is there a way to make it 6?

    Appreciate any help that you can supply.

    BR Vittorio

    opened by Rossobimbo 5
  • slam toolbox, RobotModel Status : Error

    slam toolbox, RobotModel Status : Error

    $ ros2 launch linorobot2_description description.launch.py rviz:=true I can see my robot.

    But, When I doing slam. $ ros2 launch linorobot2_navigation slam.launch.py rviz:=true sim:=true 1 2

    There are no RobotModel base_footprint and base_link else. But, I can see these when I $ ros2 launch linorobot2_description description.launch.py rviz:=true

    Also, I [slam_toolbox]: Message Filter dropping message: frame 'laser' So I try follow this.

    Try to up transform_timeout by 0.1 in linorobot2_navigation/config/slam.yaml until the warning is gone.

    But, I this Message keep showing.

    Please help me.

    opened by hwacoding 4
  • No communication between linorobot and host

    No communication between linorobot and host

    I have my new Ros2 setup and no communication is happening between the linorobot and the host. ( Even a simple talker to listener test is not working. Is there any router set up required ( my router is a Bell Home Hub 3000) and does not seem to have any menu related to DDS settings ?

    opened by FrGe2016 0
  • Dont change robot color on xacro file

    Dont change robot color on xacro file

    Hi ı make edit on the lino2 robot xacro file with mecanum wheel, ı add my .dae file it works but ı cant change color on body, still looks yellow, ı change the color parameter on base.urdf.xacro but dont apply my changes

    opened by esamet 0
  • Update PID constants

    Update PID constants

    Say, can we just change the constants in the config file and Linorobot2 loads the new values each time we restart it? Or must we go through the firmware recompile function to update the PID values? Thanks for a great repo!

    opened by Russ76 1
  • mecanum wheel robot do not spin when using teleop

    mecanum wheel robot do not spin when using teleop

    hi

    When i using teleop, robot can go straight and back. Also can go shift + j and u/o/m/. But j - To rotate the robot CCW. doesnt working.

    Please help me.

    opened by hwacoding 0
  • Gazebo install fails on RPi / U22 Jammy / ROS2 Humble

    Gazebo install fails on RPi / U22 Jammy / ROS2 Humble

    ubuntu@LINOROBOT:/tmp$ bash install_linorobot2.bash 4wd ydlidar realsense ... E: Unable to locate package ros-humble-gazebo-ros-pkgs ERROR: the following rosdeps failed to install apt: command [sudo -H apt-get install -y ros-humble-gazebo-ros-pkgs] failed

    Trying directly: ubuntu@LINOROBOT:/tmp$ sudo -H apt-get install -y ros-humble-gazebo-ros-pkgs also fails

    according to https://github.com/ros-simulation/gazebo_ros_pkgs/issues/1158 chapulina commented on Sep 9, 2020 Board: Raspberry Pi4 4Gb of RAM ros foxy on a Rpi4 This is the problem, gazebo-ros-pkgs is only available for amd64:

    Confirmed by looking in: http://packages.ros.org/ros2/ubuntu/pool/main/r/ros-foxy-gazebo-ros-pkgs/

    ros--desktop-full is reported to contain gazebo. It is NOT available.
    whereas ros--desktop does not. IS available for humble. Need a work-around to install gazebo under ROS2 Humble / U22 Jammy / Raspberry Pi 4B-8GB

    opened by JHPHELAN 5
  • Obstacles can't clear in local costmap even after they move out

    Obstacles can't clear in local costmap even after they move out

    Hello all, I have been facing an issue when detect an obstacle and the obstacle gets updated on the on the local costmap, but after the obstacle has moved the obstacle is still present on the local costmap. image

    got this error while ros2 launch linorobot2_navigation navigation.launch is the error related with obstacle cant clear? image

    Thanks

    opened by oneberrybatam 0
Owner
linorobot
linorobot
Krieg is a Python package for a general game framework.

Krieg Krieg is a Python package for a general game framework. It provides base classes for implementing simple games. Some example games are already i

Juho Kim 2 Jan 6, 2022
Ros2-voiceroid2 - ROS2 wrapper package of VOICEROID2

ros2_voiceroid2 ROS2 wrapper package of VOICEROID2 Windows Only Installation Ins

Nkyoku 1 Jan 23, 2022
This is an example manipulation package of for a robot manipulator based on Drake with ROS2.

This is an example manipulation package of for a robot manipulator based on Drake with ROS2.

Sotaro Katayama 1 Oct 21, 2021
Fener ROS2 package version 2

Fener's ROS2 codes that runs on the vehicle. This node contains basic sensing and actuation nodes for vehicle control. Also example applications will be added.

Muhammed Sezer 1 Jan 18, 2022
YOLOv5 + ROS2 object detection package

YOLOv5-ROS YOLOv5 + ROS2 object detection package This program changes the input of detect.py (ultralytics/yolov5) to sensor_msgs/Image of ROS2. Requi

Ar-Ray 23 Dec 19, 2022
A simple port scanner for Web/ip scanning Port 0/500 editable inside the .py file

Simple-Port-Scanner a simple port scanner for Web/ip scanning Port 0/500 editable inside the .py file Open Cmd/Terminal Cmd Downloads Run Command: pip

YABOI 1 Nov 22, 2021
🦕 NanoSaur is a little tracked robot ROS2 enabled, made for an NVIDIA Jetson Nano

?? nanosaur NanoSaur is a little tracked robot ROS2 enabled, made for an NVIDIA Jetson Nano Website: nanosaur.ai Do you need an help? Discord For tech

NanoSaur 162 Dec 9, 2022
Doosan robotic arm, simulation, control, visualization in Gazebo and ROS2 for Reinforcement Learning.

Robotic Arm Simulation in ROS2 and Gazebo General Overview This repository includes: First, how to simulate a 6DoF Robotic Arm from scratch using GAZE

David Valencia 12 Jan 2, 2023
Material for the ros2 crash course

Material for the ros2 crash course

Emmanuel Dean 1 Jan 22, 2022
ROS2 Docker tutorial with VSCode

ROS2-Docker-tutorial I made this repository using athackst/vscode_ros2_workspace templete with foxy-nvidia branch. You could see more information abov

Tae Young Kim 4 Nov 3, 2022
YouTube Video publisher using youtube-dl & ROS2🐢

YouTube-publisher-ROS2 Publish sensor_msgs/Image by "YouTube" ?? ?? ?? ! You don't have to use webcamera or your video to check demos. Purpose Quick d

Ar-Ray 5 Dec 4, 2022
ROS2 + PyQt5 Example

ROS2 + PyQt5 Example

Ar-Ray 4 Nov 15, 2022
ROS2 nodes for Waveshare Alphabot2-Pi mobile robot.

ROS2 for Waveshare Alphabot2-Pi This repo contains ROS2 packages for the Waveshare Alphabot2-Pi mobile robot: alphabot2: it contains the nodes used to

Michele Rizzo 2 Oct 11, 2022
One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind them.

AwesomeVersion One version package to rule them all, One version package to find them, One version package to bring them all, and in the darkness bind

Joakim Sørensen 39 Dec 31, 2022
Python 3+ compatible port of the configobj library

configobj Python 3+ compatible port of the configobj library. Documentation You can find a full manual on how to use ConfigObj at readthedocs. If you

Differently Sized Kittens 288 Dec 14, 2022
fast python port of arc90's readability tool, updated to match latest readability.js!

python-readability Given a html document, it pulls out the main body text and cleans it up. This is a python port of a ruby port of arc90's readabilit

Yuri Baburov 2.2k Dec 28, 2022
Python port of Google's libphonenumber

phonenumbers Python Library This is a Python port of Google's libphonenumber library It supports Python 2.5-2.7 and Python 3.x (in the same codebase,

David Drysdale 3.1k Dec 29, 2022
A simple asynchronous TCP/IP Connect Port Scanner in Python 3

Python 3 Asynchronous TCP/IP Connect Port Scanner A simple pure-Python TCP Connect port scanner. This application leverages the use of Python's Standa

null 70 Jan 3, 2023
Arbitrium is a cross-platform, fully undetectable remote access trojan, to control Android, Windows and Linux and doesn't require any firewall exceptions or port forwarding rules

About: Arbitrium is a cross-platform is a remote access trojan (RAT), Fully UnDetectable (FUD), It allows you to control Android, Windows and Linux an

Ayoub 861 Feb 18, 2021
Hotplugger: Real USB Port Passthrough for VFIO/QEMU!

Hotplugger: Real USB Port Passthrough for VFIO/QEMU! Welcome to Hotplugger! This app, as the name might tell you, is a combination of some scripts (py

DARKGuy (Alemar) 66 Nov 24, 2022