Problem in connecting the ROS Bridge to a real robot and sending the message

Hi there,

I am trying to synchronize the robot simulation on Isaac Sim and the real robot.
The robot is powered by a Jetson Nano board (ubuntu 18.04 and ROS melodic).

I have created the Action-graph as below to control the robot to move forwards and backwards by pressing the keyboard. The simulation on Isaac-Sim works but the message couldn’t reach the ROS in the robot.
The rostopic cmd_vel was on.

I have inserted the ROS_MASTER_URL and ROS_IP to the isaac-sim.sh file.

On the other hand I can send the message to ROS from a custom mobile apps by the ROS bridge.
Could you tell me what might be the possible problems that the robot cannot receive signal from Isaac-Sim? Thanks

Hi @kahlam

Have you also configured the ROS_MASTER_URI and ROS_IP (or ROS_HOSTNAME) in the robot?

Btw, I think it is not necessary to modify the Isaac Sim startup script.
As long as there is a roscore running in some other terminal on the same workstation/container it is enough.

Hi @toni.sm

No I did not configure the ROS_MASTER_URI and ROS_IP on the robot side.
ROS was not installed on the workstation at that time so rosrun was not running.

As my workstation OS is ubuntu 22.04 thus I installed ROS2 and tried to connect to robot through ros1_bridge but somehow, I was not able to launch the ros1_bridge.

Should I downgrade the workstation to Ubuntu 20.04 and install ROS1 noetic to connect to ROS1 melodic on the robot or install ROS2 on the robot and use ros2_bridge to receive message from Isaac-sim?

Also, do anyone can share some samples of Action graphs that show how to publish message that make robot move?

Thanks in advance!

Hi @kahlam

A possible solution in this scenario could be to run a ROS docker container on the workstation alongside Isaac Sim.

Note: It should work, although I haven’t tested it because I don’t have Ubuntu 22.XX installed.

Example (change the WORKSTATION_IP by the workstation IP address):

# on the workstation
docker pull ros:noetic-ros-core-focal
docker run --entrypoint bash -it --network=host ros:noetic-ros-core-focal

# inside the container
# do it once (add ROS environment variables to .bashrc) and source the .bashrc
echo export ROS_MASTER_URI=http://WORKSTATION_IP:11311/ >> ~/.bashrc
echo export ROS_IP=WORKSTATION_IP >> ~/.bashrc

# launch roscore 
source /opt/ros/noetic/setup.bash 
roscore

Also, configure the ROS_MASTER_URI and ROS_IP in the terminal running Isaac Sim (I retract my previous comment) and in the robot (use the robot IP address for the ROS_IP in the robot computer) as well

Hi @toni.sm

I reinstalled the OS and now using the Ubuntu 20.04.
I can successfully connect to the real robot using Isaac Sim ROS1 bridge by configuring both the ROS_MASTER_URI and ROS_HOSTNAME on both the issac-sim.sh and the robot side.
However, on the robot side I confirmed that it can receive the rostopic sent out from Isaac’s Action Graph, but it failed to receive the msgs by checking the rostopic echo (eg. sending linear velocity in cmd_vel to make the robot move )

Here I set to use keyword to increase linear velocity to move the robot (TopicName is odom2)

On Robot side I used Rostopic echo but no message is received

What would be the problem? the rosbridge or action graph problem?
Thanks!

HI @kahlam

Make sure you can reach the ROS node by testing the connectivity with the IP or host name that appear when showing a topic or ROS node info:

Example:

$ rostopic info /robot/joint_states
Type: sensor_msgs/JointState

Publishers: 
 * /OmniIsaacRosBridge (http://HP-ZBook-Studio-G8:41931/)

Subscribers: None
$ ping HP-ZBook-Studio-G8
PING HP-ZBook-Studio-G8 (192.168.10.1) 56(84) bytes of data.
64 bytes from HP-ZBook-Studio-G8 (192.168.10.1): icmp_seq=1 ttl=64 time=0.068 ms
...

Hi @toni.sm

Yes the connectivity looks fine.
But no data received showing on rostopic echo.

Hi @kahlam

Can you test the communication in both directions/devices using for example the following commands?

rostopic pub /topic std_msgs/String "Hello World!" --rate=1.0
rostopic echo /topic

Also, can you provide a diagram showing the involved devices and their IP address, the ROS master location, the ROS-related environment variables configured on each device and any other relevant info?

Hi @toni.sm

The communication between the devices works fine.
After various experiments, I found that the connection of a ROS2 robot and Isaac ros2 bridge work properly.
However, the same setting does not work for the ROS1 robot and Isaac ros1 bridge.

Hi @toni.sm

The problem is solved by the following setting in the isaac-sim.sh file:
export ROS_MASTER_URI=http://(Robot IP):11311
export ROS_IP= (Host PC IP)

Thanks so much!

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.