Working features:
- OpenGL GUI,
- control from computer keyboard, Gamepad or 3D mouse,
- forward and inverse kinematics (double precision math),
- implemented in four C files for simplicity and portability,
- motor motion sound (see
HAVE_AUDIO
in source code).
Untested / unfinished features:
- Stefan Wilhelm's trajectory planner,
- ncurses UI,
- control from LinuxCNC or Machinekit via HAL.
sudo apt -y install git
git clone https://github.com/koppi/rm501.git
- Required: OpenGL, SDL2, SDL2_ttf
- Optional: ncurses, libpng, ZeroMQ, Eclipse Mosquitto™, LinuxCNC / Machinekit HAL
# required packages
sudo apt -y install mesa-common-dev libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev freeglut3-dev
sudo usermod -aG input $USER # for joystick access
sudo apt -y install fonts-dejavu-core # for DejaVuSansMono.ttf
# optional packages
sudo apt -y install libncursesw5-dev # for console
sudo apt -y install libpng-dev # for screenshots
sudo apt -y install libzmq5 libzmq3-dev # for ZeroMQ
sudo apt -y install libpaho-mqtt-dev # for Eclipse MQTT
sudo apt -y install mosquitto # for Mosquitto MQTT server
sudo apt -y install linuxcnc-uspace-dev # for LinuxCNC
Compile and run:
cd rm501/
make
./rm501 -s # start program with SDL GUI
– Tested on Windows 2022 and Ubuntu 22.04 .
- Control via keyboard:
Key on Keyboard | Emulator Key |
---|---|
⎋ Escape | quit the simulator |
⇥ Tab | toggle 3D view |
Q, W, E, R, T | increase the joint values for waist, shoulder, elbow, pitch and roll |
A, S, D, F, G | decrease the joint values for waist, shoulder, elbow, pitch and roll |
I K, and direction keys (on your right-hand side) | control the end-effector position |
C, V | move end effector in a circle in the x-y plane, reset circle position |
N, H | move to 'nest' position, move to the 'all link horizontal' home position |
O, L | open, close tool |
Hold the shift key to move the joints in parallel, not linearly.
-
Control via SpaceNavigator:
see
HAVE_SPACENAV
in source code. -
Control via Gamepad:
see
HAVE_JOYSTICK
in source code. -
Control via ØMQ
Unfinished (see
HAVE_ZMQ
in source code). -
MQ Telemetry Transport via Eclipse MQTT.
Partially working (see
HAVE_MQTT
in source code). -
Control via LinuxCNC / Machinekit:
Unfinished (see
HAVE_HAL
in source code).
- Jakob Flierl - koppi