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.
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
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.
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?
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
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)
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?
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.