mit-biomimetics / Cheetah-Software

MIT License
2.58k stars 918 forks source link

Problem in running robot code #8

Closed Yage0912 closed 5 years ago

Yage0912 commented 5 years ago

Hi, I can successfully run the simulator on user computer. Now I want to run robot code on upboard(I don't have a mini_cheetah still now). I followed "running_mini_cheetah.md" for each step and made some modifications to adapt to my network adapter. Some of my steps as follows: run ../scripts/config_network_lcm.sh user run ../scripts/send_to_mini_cheetah.sh user/MIT_Controller/mit_ctrl after make ssh in upboard cd robot-software/ ./config_network_lcm.sh upboard cd bulid/ if I run ./run_mc.sh ./mit_ctrl, there will be an error as _./mit_ctrl: error while loading shared libraries: liblcm.so.1: cannot open shared object file: No such file or directory_ if I run sudo nohup ./run_mc.sh ./mit_ctrl, then nohup: ignoring input and appending output to 'nohup.out' I don't know whether the robot code start running successfully. I also run ./sim/sim in mcbuild folder on user computer and choose Mini Cheetah and Robot to start, and some output as follows: [GameController] Found 1 joystick [SIM GRAPHICS] New graphics window. [Graphics3D] Initialize OpenGL... [SimControlPanel] Init Robot Interface... [RobotInterface] Load parameters... [RobotInterface] Init LCM [RobotInterface] Init graphics draw list has 13 items LCM self test failed!! Check your routing tables and firewall settings LCM self test failed!! Check your routing tables and firewall settings [RobotInterface] Init dynamics [RobotInterface] Send parameters to robot... [PeriodicTask] Start robot-interface (0 s, 16666667 ns) set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheatermode (iter 0 timed out), trying again... ......

Is it something I did wrong or missed some important steps?

dicarlo236 commented 5 years ago

It seems like LCM is not installed correctly on the up board. You should make sure that you have followed the installation directions for LCM here: https://lcm-proj.github.io/build_instructions.html . In particular, make sure you run sudo ldconfig at the end.

Yage0912 commented 5 years ago

It seems like LCM is not installed correctly on the up board. You should make sure that you have followed the installation directions for LCM here: https://lcm-proj.github.io/build_instructions.html . In particular, make sure you run sudo ldconfig at the end.

Thank you. I installed LCM on up board, and now lcm setup successfully. But vectornav init failed, I think I need a IMU connect to up board, what's the specific model of the IMU you use? It seems that we need at least two serial port on up board, ttyS0 for imu, and ttyS4 for wireless serial model. But I only find one serial port on up board's 40 pin GP-bus. image Sorry I am a newcomer to this. Does upboard run ubuntu or other system with linux kernel? I commented out some code to make the robot code continue to run, image now it outputs as follows, it seems i don't open SPI port on up board. image

Then I run ./sim/sim on user computer, and choose Mini Cheetah and Robot to start, the previous error still exists: image

dicarlo236 commented 5 years ago

This version of the software will work with the VectorNav VN-100 IMU. It is plugged in connector 11 on this image https://up-board.org/wp-content/uploads/2018/10/layout-1024x361.png . Next time we update this software, it will also support Lord Microstrain IMUs plugged in over USB.

The wireless receiver plugs into the serial port on the 40-pin GPIO header.

On Mini-Cheetah, the Up Board runs Ubuntu Server 16.04, with kernel version 4.4.86. We use the PREEMPT_RT patch (https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/) to get better timing.

To get the SPI working, you also need to apply a patch to the kernel. This is available here: https://github.com/emutex/meta-up-board/tree/krogoth/recipes-kernel/linux/files

you should not apply the patches in the hdmiaudio folder, the 0004-pwm-lpss-fix-base_unit... patch, or the 0029-x86-up-default-up_board.spidev1-to-false patch. The patches which change the Kconfig and Makefile will fail and will need to be fixed manually.

It looks like you are having an issue where LCM is not working on the Up Board, so it can't see that you have clicked the start button on the development computer.

To fix the LCM issue, you will need to make sure that the up board and the computer can ping each other over the network. Then, you will need to make sure that multicast is set up properly for LCM. We have a script which does this: https://github.com/mit-biomimetics/Cheetah-Software/blob/master/scripts/config_network_lcm.sh

You need to run ./config_network_lcm.sh -I <name_of_interface> , where you replace <name_of_interface> with the name of the network interface that connects the development computer and the up board. The LCM website explains this in more detail here https://lcm-proj.github.io/multicast_setup.html

dicarlo236 commented 5 years ago

There is some documentation about the Up board kernel here https://github.com/QiayuanLiao/Ubuntu-RT-UP-Board

Dv-dev-cloud commented 4 months ago

hello,I have encountered some mistakes similar to yours. I will put my mistakes below: hz110@raspberrypi:/media/hz110/ls/Cheetah-Software-master/build $ ./bin/sim [SimControlPanel] Init simulator parameters... sim parameters are all good [SimControlPanel] Initialize Graphics... [DrawList] Load object files... ERROR bad obj line ERROR bad obj line ERROR bad obj line mtllib u_link_c3.mtl ERROR bad obj line usemtl None ERROR bad obj line ERROR bad obj line mtllib l_link_c3.mtl ERROR bad obj line usemtl None ERROR bad obj line ERROR bad obj line ERROR bad obj line ERROR bad obj line ERROR bad obj line mtllib l_link_mini.mtl ERROR bad obj line usemtl None ERROR bad obj line ERROR bad obj line mtllib sphere.mtl ERROR bad obj line g sphere1_default ERROR bad obj line usemtl default ERROR bad obj line s 1 ERROR bad obj line ERROR bad obj line ERROR bad obj line ERROR bad obj line ERROR bad obj line [GameController] Found 1 joystick [SIM GRAPHICS] New graphics window. [Graphics3D] Initialize OpenGL... [SimControlPanel] Init Robot Interface... [RobotInterface] Load parameters... [RobotInterface] Init LCM [RobotInterface] Init graphics draw list has 13 items [RobotInterface] Init dynamics [RobotInterface] Send parameters to robot... set cheater_mode to 0 (0) [PeriodicTask] Start robot-interface (0 s, 16666667 ns) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheater_mode (iter 0 timed out), trying again... set cheater_mode to 0 (0) [RobotInterface] Failed to send parameter cheatermode (iter 0 timed out), trying again... ,I solved some problems by commenting out some "s off" in the. obj file in the source, but there is still the problem of "ERROR bad obj line", and there are "[robot interface] failed to send parameter chef mode (ITER 0 timed out), trying again. ... Set chef _ mode to 0 (0) "How should I solve this problem? I look forward to your answer.