JUNCHAO

gazebo simulator launch problem

Recommended Posts

Hello Intera team,

 

When I finished all the install process by following the Intera SDK Gazebo tutorial, I tried to launch the gazebo simulator and run the example:

$ ./intera.sh sim
$ roslaunch sawyer_sim_examples sawyer_pick_and_place_demo.launch

but through the terminal, I saw some errors and warnings. It shows many example codes have errors.gazebo_example_error.png.ad5f6a6c7f9bf31486b0cd2fe331eda9.png

and a Warning shows " Converting a deprecated SDF source[data-string]."

gazebo_example_warning.png.19e28b09389964724be71fe0747876aa.png

Can anyone help me diagnose it or provide any advice? So appreciate!

 

Junchao Li

Share this post


Link to post
Share on other sites

Hi Junchao,

The error you've reported is just a Warning caused by gazebo_ros_control_plugins for the camera system, and will not cause the launch to fail. The real Traceback seems to be cut off in your screen shots, so that will be hard for us to debug. Can you please include your full error output?

Thank you,

~ Ian

Share this post


Link to post
Share on other sites

[intera - http://localhost:11311] robotics@robotics-Latitude-E5470:~/ros_ws$ roslaunch sawyer_sim_examples sawyer_pick_and_place_demo.launch
... logging to /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/roslaunch-robotics-Latitude-E5470-2338.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://169.254.221.25:46315/

SUMMARY
========

PARAMETERS
 * /img_path_head_display: /home/robotics/ro...
 * /manifest/robot_class: sawyer
 * /manifest/robot_software/version/HLR_VERSION_STRING: 5.2.0.0
 * /named_poses/head/joint_names: ['head_pan']
 * /named_poses/head/poses/neutral: [0.0]
 * /named_poses/head/poses/shipping: [-3.14]
 * /named_poses/right/joint_names: ['right_j0', 'rig...
 * /named_poses/right/poses/neutral: [0.0, -1.18, 0.0,...
 * /named_poses/right/poses/shipping: [0.0, -1.57, 0.0,...
 * /robot/electric_gripper_controller/joints/right_gripper_l_finger_controller/joint: right_gripper_l_f...
 * /robot/electric_gripper_controller/joints/right_gripper_l_finger_controller/pid/d: 0.5
 * /robot/electric_gripper_controller/joints/right_gripper_l_finger_controller/pid/i: 50
 * /robot/electric_gripper_controller/joints/right_gripper_l_finger_controller/pid/p: 5000
 * /robot/electric_gripper_controller/joints/right_gripper_r_finger_controller/joint: right_gripper_r_f...
 * /robot/electric_gripper_controller/joints/right_gripper_r_finger_controller/pid/d: 0.5
 * /robot/electric_gripper_controller/joints/right_gripper_r_finger_controller/pid/i: 50
 * /robot/electric_gripper_controller/joints/right_gripper_r_finger_controller/pid/p: 5000
 * /robot/electric_gripper_controller/topic_command: /io/end_effector/...
 * /robot/electric_gripper_controller/topic_config: /io/end_effector/...
 * /robot/electric_gripper_controller/topic_state: /io/end_effector/...
 * /robot/electric_gripper_controller/type: sawyer_sim_contro...
 * /robot/head_position_controller/joints/head_controller/joint: head_pan
 * /robot/head_position_controller/joints/head_controller/pid/d: 10.0
 * /robot/head_position_controller/joints/head_controller/pid/i: 1.0
 * /robot/head_position_controller/joints/head_controller/pid/p: 100.0
 * /robot/head_position_controller/topic_command: /robot/head/comma...
 * /robot/head_position_controller/topic_state: /robot/head/head_...
 * /robot/head_position_controller/type: sawyer_sim_contro...
 * /robot/joint_state_controller/publish_rate: 100
 * /robot/joint_state_controller/type: joint_state_contr...
 * /robot/limb/right/camera_name: right_hand_camera
 * /robot/limb/right/gravity_tip_name: right_gripper_tip
 * /robot/limb/right/root_name: base
 * /robot/limb/right/tip_name: right_gripper_tip
 * /robot/right_joint_effort_controller/joints/right_j0_controller/joint: right_j0
 * /robot/right_joint_effort_controller/joints/right_j1_controller/joint: right_j1
 * /robot/right_joint_effort_controller/joints/right_j2_controller/joint: right_j2
 * /robot/right_joint_effort_controller/joints/right_j3_controller/joint: right_j3
 * /robot/right_joint_effort_controller/joints/right_j4_controller/joint: right_j4
 * /robot/right_joint_effort_controller/joints/right_j5_controller/joint: right_j5
 * /robot/right_joint_effort_controller/joints/right_j6_controller/joint: right_j6
 * /robot/right_joint_effort_controller/topic: /robot/limb/right...
 * /robot/right_joint_effort_controller/type: sawyer_sim_contro...
 * /robot/right_joint_gravity_controller/command_topic: /robot/limb/right...
 * /robot/right_joint_gravity_controller/disable_timeout: 0.2
 * /robot/right_joint_gravity_controller/disable_topic: /robot/limb/right...
 * /robot/right_joint_gravity_controller/joints/right_j0_controller/joint: right_j0
 * /robot/right_joint_gravity_controller/joints/right_j1_controller/joint: right_j1
 * /robot/right_joint_gravity_controller/joints/right_j2_controller/joint: right_j2
 * /robot/right_joint_gravity_controller/joints/right_j3_controller/joint: right_j3
 * /robot/right_joint_gravity_controller/joints/right_j4_controller/joint: right_j4
 * /robot/right_joint_gravity_controller/joints/right_j5_controller/joint: right_j5
 * /robot/right_joint_gravity_controller/joints/right_j6_controller/joint: right_j6
 * /robot/right_joint_gravity_controller/type: sawyer_sim_contro...
 * /robot/right_joint_position_controller/joints/right_j0_controller/joint: right_j0
 * /robot/right_joint_position_controller/joints/right_j0_controller/pid/d: 25.0
 * /robot/right_joint_position_controller/joints/right_j0_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j0_controller/pid/p: 500.0
 * /robot/right_joint_position_controller/joints/right_j1_controller/joint: right_j1
 * /robot/right_joint_position_controller/joints/right_j1_controller/pid/d: 30.0
 * /robot/right_joint_position_controller/joints/right_j1_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j1_controller/pid/p: 400.0
 * /robot/right_joint_position_controller/joints/right_j2_controller/joint: right_j2
 * /robot/right_joint_position_controller/joints/right_j2_controller/pid/d: 30.0
 * /robot/right_joint_position_controller/joints/right_j2_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j2_controller/pid/p: 250.0
 * /robot/right_joint_position_controller/joints/right_j3_controller/joint: right_j3
 * /robot/right_joint_position_controller/joints/right_j3_controller/pid/d: 50.0
 * /robot/right_joint_position_controller/joints/right_j3_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j3_controller/pid/p: 300.0
 * /robot/right_joint_position_controller/joints/right_j4_controller/joint: right_j4
 * /robot/right_joint_position_controller/joints/right_j4_controller/pid/d: 8.0
 * /robot/right_joint_position_controller/joints/right_j4_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j4_controller/pid/p: 300.0
 * /robot/right_joint_position_controller/joints/right_j5_controller/joint: right_j5
 * /robot/right_joint_position_controller/joints/right_j5_controller/pid/d: 5.0
 * /robot/right_joint_position_controller/joints/right_j5_controller/pid/i: 1.0
 * /robot/right_joint_position_controller/joints/right_j5_controller/pid/p: 100.0
 * /robot/right_joint_position_controller/joints/right_j6_controller/joint: right_j6
 * /robot/right_joint_position_controller/joints/right_j6_controller/pid/d: 4.0
 * /robot/right_joint_position_controller/joints/right_j6_controller/pid/i: 10.0
 * /robot/right_joint_position_controller/joints/right_j6_controller/pid/p: 50.0
 * /robot/right_joint_position_controller/topic_joint_command: /robot/limb/right...
 * /robot/right_joint_position_controller/topic_set_speed_ratio: /robot/limb/right...
 * /robot/right_joint_position_controller/type: sawyer_sim_contro...
 * /robot/right_joint_velocity_controller/joints/right_j0_controller/joint: right_j0
 * /robot/right_joint_velocity_controller/joints/right_j0_controller/pid/d: 0.1
 * /robot/right_joint_velocity_controller/joints/right_j0_controller/pid/i: 0.0
 * /robot/right_joint_velocity_controller/joints/right_j0_controller/pid/p: 10
 * /robot/right_joint_velocity_controller/joints/right_j1_controller/joint: right_j1
 * /robot/right_joint_velocity_controller/joints/right_j1_controller/pid/d: 0.1
 * /robot/right_joint_velocity_controller/joints/right_j1_controller/pid/i: 1.0
 * /robot/right_joint_velocity_controller/joints/right_j1_controller/pid/p: 100
 * /robot/right_joint_velocity_controller/joints/right_j2_controller/joint: right_j2
 * /robot/right_joint_velocity_controller/joints/right_j2_controller/pid/d: 0.01
 * /robot/right_joint_velocity_controller/joints/right_j2_controller/pid/i: 0.0
 * /robot/right_joint_velocity_controller/joints/right_j2_controller/pid/p: 0.05
 * /robot/right_joint_velocity_controller/joints/right_j3_controller/joint: right_j3
 * /robot/right_joint_velocity_controller/joints/right_j3_controller/pid/d: 0.1
 * /robot/right_joint_velocity_controller/joints/right_j3_controller/pid/i: 0.01
 * /robot/right_joint_velocity_controller/joints/right_j3_controller/pid/p: 0.5
 * /robot/right_joint_velocity_controller/joints/right_j4_controller/joint: right_j4
 * /robot/right_joint_velocity_controller/joints/right_j4_controller/pid/d: 0.01
 * /robot/right_joint_velocity_controller/joints/right_j4_controller/pid/i: 0.0
 * /robot/right_joint_velocity_controller/joints/right_j4_controller/pid/p: 1.0
 * /robot/right_joint_velocity_controller/joints/right_j5_controller/joint: right_j5
 * /robot/right_joint_velocity_controller/joints/right_j5_controller/pid/d: 0.01
 * /robot/right_joint_velocity_controller/joints/right_j5_controller/pid/i: 0.0
 * /robot/right_joint_velocity_controller/joints/right_j5_controller/pid/p: 0.05
 * /robot/right_joint_velocity_controller/joints/right_j6_controller/joint: right_j6
 * /robot/right_joint_velocity_controller/joints/right_j6_controller/pid/d: 0.01
 * /robot/right_joint_velocity_controller/joints/right_j6_controller/pid/i: 0.0
 * /robot/right_joint_velocity_controller/joints/right_j6_controller/pid/p: 0.05
 * /robot/right_joint_velocity_controller/topic: /robot/limb/right...
 * /robot/right_joint_velocity_controller/type: sawyer_sim_contro...
 * /robot_config/assembly_names: ['head', 'right',...
 * /robot_config/camera_config/head_camera/cameraType: ienso_ethernet
 * /robot_config/camera_config/head_camera/power: torso_camera_power
 * /robot_config/camera_config/right_hand_camera/cameraType: cognex
 * /robot_config/camera_config/right_hand_camera/power: right_hand_camera...
 * /robot_config/head_config/joint_names: ['head_pan']
 * /robot_config/head_config/type: head
 * /robot_config/joint_config/joint_acceleration_limit/head_pan: 10.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j0: 10.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j1: 8.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j2: 10.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j3: 10.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j4: 12.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j5: 12.0
 * /robot_config/joint_config/joint_acceleration_limit/right_j6: 12.0
 * /robot_config/right_config/accelerometer_names: ['right_accelerom...
 * /robot_config/right_config/end_effector_names: ['right_gripper']
 * /robot_config/right_config/joint_names: ['right_j0', 'rig...
 * /robot_config/right_config/type: limb
 * /robot_config/torso_config/joint_names: ['torso_t0']
 * /robot_config/torso_config/type: torso
 * /robot_description: <?xml version="1....
 * /rosdistro: kinetic
 * /rosversion: 1.12.13
 * /use_sim_time: True

NODES
  /io/internal_camera/head_camera/
    rectify_color (nodelet/nodelet)
  /io/internal_camera/right_hand_camera/
    rectify_mono (nodelet/nodelet)
  /
    base_to_world (tf2_ros/static_transform_publisher)
    camera_sim (sawyer_gazebo/cameras_sim_io_node.py)
    gazebo (gazebo_ros/gzserver)
    gazebo_gui (gazebo_ros/gzclient)
    ik_pick_and_place_demo (sawyer_sim_examples/ik_pick_and_place_demo.py)
    intera_camera_nodelets (nodelet/nodelet)
    io_robot (rosbag/play)
    robot_state_publisher (robot_state_publisher/robot_state_publisher)
    urdf_spawner (gazebo_ros/spawn_model)
  /robot/
    controller_spawner (controller_manager/controller_manager)
    controller_spawner_stopped (controller_manager/controller_manager)
    electric_gripper_controller_spawner_stopped (controller_manager/controller_manager)

ROS_MASTER_URI=http://localhost:11311

process[gazebo-1]: started with pid [2361]
process[gazebo_gui-2]: started with pid [2371]
process[base_to_world-3]: started with pid [2376]
process[urdf_spawner-4]: started with pid [2377]
process[robot/controller_spawner-5]: started with pid [2383]
process[robot/controller_spawner_stopped-6]: started with pid [2388]
process[robot/electric_gripper_controller_spawner_stopped-7]: started with pid [2397]
process[robot_state_publisher-8]: started with pid [2398]
process[camera_sim-9]: started with pid [2399]
process[intera_camera_nodelets-10]: started with pid [2400]
process[io/internal_camera/right_hand_camera/rectify_mono-11]: started with pid [2401]
process[io/internal_camera/head_camera/rectify_color-12]: started with pid [2417]
process[io_robot-13]: started with pid [2435]
process[ik_pick_and_place_demo-14]: started with pid [2467]
Error when loading joint_state_controller
Error when loading head_position_controller
Error when loading right_joint_gravity_controller
Error when loading right_joint_position_controller
Error when starting  ['joint_state_controller']
Error when starting  ['head_position_controller']
Error when starting  ['right_joint_gravity_controller']
Error when loading right_joint_velocity_controller
Error when starting  ['right_joint_position_controller']
Error when loading right_joint_effort_controller
Error when loading electric_gripper_controller
Error when starting  ['electric_gripper_controller']
[robot/controller_spawner-5] process has finished cleanly
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/robot-controller_spawner-5*.log
[robot/controller_spawner_stopped-6] process has finished cleanly
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/robot-controller_spawner_stopped-6*.log
[robot/electric_gripper_controller_spawner_stopped-7] process has finished cleanly
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/robot-electric_gripper_controller_spawner_stopped-7*.log
[gazebo-1] process has died [pid 2361, exit code 255, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode /home/robotics/ros_ws/src/sawyer_simulator/sawyer_gazebo/worlds/sawyer.world __name:=gazebo __log:=/home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/gazebo-1.log].
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/gazebo-1*.log

SpawnModel script started
[INFO] [1528332142.672926, 0.000000]: Loading model XML from ros parameter
[INFO] [1528332142.690518, 0.000000]: Waiting for service /gazebo/spawn_urdf_model
[INFO] [1528332142.693874, 0.000000]: Calling service /gazebo/spawn_urdf_model
[INFO] [1528332142.707624, 0.000000]: Spawn status: SpawnModel: Failure - entity already exists.
[INFO] [1528332142.707956, 0.000000]: Waiting for service /gazebo/set_model_configuration
[INFO] [1528332142.710168, 0.000000]: temporary hack to **fix** the -J joint position option (issue #93), sleeping for 1 second to avoid race condition.
libGL error: failed to create drawable
[INFO] [1528332143.711598, 0.000000]: Calling service /gazebo/set_model_configuration
[INFO] [1528332143.757085, 0.000000]: Set model configuration status: SetModelConfiguration: success
[urdf_spawner-4] process has finished cleanly
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/urdf_spawner-4*.log
Warning [parser.cc:437] Converting a deprecated SDF source[data-string].
[ INFO] [1528332145.199977605]: GazeboRosVideo (gzclient, ns = /robot) has started
Traceback (most recent call last):
  File "/home/robotics/ros_ws/src/sawyer_simulator/sawyer_sim_examples/scripts/ik_pick_and_place_demo.py", line 268, in <module>
    sys.exit(main())
  File "/home/robotics/ros_ws/src/sawyer_simulator/sawyer_sim_examples/scripts/ik_pick_and_place_demo.py", line 236, in main
    pnp = PickAndPlace(limb, hover_distance)
  File "/home/robotics/ros_ws/src/sawyer_simulator/sawyer_sim_examples/scripts/ik_pick_and_place_demo.py", line 46, in __init__
    self._limb = intera_interface.Limb(limb)
  File "/home/robotics/ros_ws/src/intera_sdk/intera_interface/src/intera_interface/limb.py", line 172, in __init__
    timeout_msg=err_msg, timeout=5.0)
  File "/home/robotics/ros_ws/src/intera_sdk/intera_interface/src/intera_dataflow/wait_for.py", line 42, in wait_for
    raise OSError(errno.ETIMEDOUT, timeout_msg)
OSError: [Errno 110] Right limb init failed to get current joint_states from robot/joint_states
[ik_pick_and_place_demo-14] process has died [pid 2467, exit code 1, cmd /home/robotics/ros_ws/src/sawyer_simulator/sawyer_sim_examples/scripts/ik_pick_and_place_demo.py __name:=ik_pick_and_place_demo __log:=/home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/ik_pick_and_place_demo-14.log].
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/ik_pick_and_place_demo-14*.log

 

 

That's all the code showed up in the terminal.

Share this post


Link to post
Share on other sites

It appears the following error is the core of your issue, stating that Gazebo is crashing:

Quote

[gazebo-1] process has died [pid 2361, exit code 255, cmd /opt/ros/kinetic/lib/gazebo_ros/gzserver -e ode /home/robotics/ros_ws/src/sawyer_simulator/sawyer_gazebo/worlds/sawyer.world __name:=gazebo __log:=/home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/gazebo-1.log].
log file: /home/robotics/.ros/log/a7089d10-69e5-11e8-955e-b9d69a7f7dd1/gazebo-1*.log

Gazebo is dying on launch. A few thoughts to debug the issue:

1) can you launch gazebo by itself?

$ source /opt/ros/kinetic/setup.bash && gazebo

2) is your system up to date?

$ sudo apt-get install dist-upgrade

3) Are you using a dedicated NVidia graphics card with the proprietary drivers installed?
Ubuntu Search -> Additional Drivers -> select radial for Using NVIDIA binary driver - version 3xx.x from nvidia (proprietary)
see the image attached for details:

I hope this helps!
~ Ian

 

graphics_card.png

Share this post


Link to post
Share on other sites

Hello Ian,

-Gazebo could be launched by itself and seems all fine (See the attachment).

-When I was trying to check the system updates, it shows the "dist-upgrade" package cannot be found.

-For NVIDIA, the additional driver, I wonder why this laptop doesn't have any additional driver with Ubuntu 16.04. (See the attachment). Should I just download and install this NVIDIA binary driver with version 396.xx.xx?

Thanks,

Junchao Li

Gazebo_launch_by_itself.png

additional_drivers.png

Share this post


Link to post
Share on other sites

Do you know if your computer has a graphics card? I have a feeling a lack of (or underpowered) graphics card is the root of the issue. You can view this by clicking on to the upper bar, and then About this Computer, and listing the field next to Graphics:

navigate_about.png

details_build.png

Share this post


Link to post
Share on other sites

Hello Ian,

My Graphic card appears as "Intel® HD Graphics 520 (Skylake GT2) ".

Junchao Li

Share this post


Link to post
Share on other sites

Hi Junchao,

"Intel HD Graphics 520 (Skylake GT2)" means that your computer does not in fact have a graphics card, and is instead relying on integrated graphics. This will likely not work with the relatively complex simulation and models for Sawyer, which explains your errors in execution. Please see the minimum requirements section of Gazebo for details:
http://gazebosim.org/tutorials?tut=guided_b1&amp;cat=#Systemrequirements

I would recommend using a system with a dedicated graphics card, preferably an NVidia card and use the proprietary NVidia drivers for it.

I hope this helps!
~ Ian

 

Share this post


Link to post
Share on other sites

Hello Ian,

Thanks for the advice! It looks like a hardware issue. Since I am using the university provided laptop, so you mean I have to change a higher level laptop or computer in order to run it?

Thanks,

Junchao Li

Share this post


Link to post
Share on other sites

Hello Ian,

Just wanna be clear. What is the minimum requirement as a dedicated NVidia graphic card?

Thanks,

Junchao Li

Share this post


Link to post
Share on other sites

Hi Junchao,

I am not 100% certain on the minimum required NVidia graphics card required, as neither we nor the Open Robotics Gazebo team have exhaustively tested NVidia's line of cards.

I can tell you that my 2015 laptop containing an NVidia Quadro M1000M mobile graphics card will run sawyer_gazebo at the highest 1.0 realtime simulation factor, with the proper driver installed. You might be able to get away with an older / less powerful card, but I cannot guarantee it.

I hope this helps.

~ Ian

Share this post


Link to post
Share on other sites

Hello,

I just got a new laptop with NV117 graphic card and i7 CPU, which should be enough to run the Gazebo. Since Gazebo is a simulator, it should be able to run without connecting to the sawyer robot. When I tried to run Gazebo in the shell of intera.sh sim, it showed as below. 169.254.14.184 is the ip address generated by "avahi-autoipd". I used this ip successfully operated robot through the terminal and launched the MoveIt. Does this mean I have to connect to the robot in order to run the Gazebo simulation? Please provide advise. Thanks!

Junchao Li

703121349_Screenshotfrom2018-07-1716-10-24.png.609ba9c875e8a0d09acf938181e66ae2.png

Share this post


Link to post
Share on other sites

Hi Junchao,

The laptop and graphics card should be sufficient to run Sawyer in Gazebo, provided you've installed the correct driver as I outlined above. The error you are describing in your screenshot is a networking error. The ros server should have a loopback address on your computer like 127.0.0.1 or 127.0.1.1 in normal configurations. What is the contents of your /etc/hosts file? For instance, mine is the following:

Quote

127.0.0.1       localhost
127.0.1.1       rhino         rhino.local

where "rhino" is my workstation's hostname.

Then you can initialize your intera.sh environment with the following:

$ ./intera.sh sim

To get the simulated environment variables.

I hope this helps!

~ Ian

Share this post


Link to post
Share on other sites

Hi Ian,

Did you mean the workstation needs a loop network, so it can talks to itself? Do I need to replace the ip in "intera.sh" file by my computer's ip (like 127.0.0.1)?

Thanks,

Junchao Li

Share this post


Link to post
Share on other sites

Yes the workstation does need a loopback network, but you do not need to add the loopback IP to the intera.sh file. That is done automatically if you invoke intera.sh with the "sim" argument.

~ Ian

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now