{"id":20088237,"url":"https://github.com/alexistm/indoor_position_lasers","last_synced_at":"2025-06-30T15:37:18.849Z","repository":{"id":150829557,"uuid":"49862762","full_name":"AlexisTM/Indoor_Position_lasers","owner":"AlexisTM","description":"Indoor positionning system based on lasers, working with an embedded computer, ROS and the PixHawk","archived":false,"fork":false,"pushed_at":"2016-10-07T08:38:57.000Z","size":25936,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-02T14:48:43.529Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AlexisTM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-18T08:30:38.000Z","updated_at":"2024-11-24T22:25:42.000Z","dependencies_parsed_at":"2023-04-14T12:52:06.743Z","dependency_job_id":null,"html_url":"https://github.com/AlexisTM/Indoor_Position_lasers","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AlexisTM/Indoor_Position_lasers","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisTM%2FIndoor_Position_lasers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisTM%2FIndoor_Position_lasers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisTM%2FIndoor_Position_lasers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisTM%2FIndoor_Position_lasers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AlexisTM","download_url":"https://codeload.github.com/AlexisTM/Indoor_Position_lasers/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AlexisTM%2FIndoor_Position_lasers/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262801848,"owners_count":23366636,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T16:12:54.720Z","updated_at":"2025-06-30T15:37:18.820Z","avatar_url":"https://github.com/AlexisTM.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"Positionning system with fixed lasers : \n---------------------------------------\n\nRequierments\n-----------\n\nSoftware \n----------\n\n* Working ROS Embedded Linux (RPi2 under Ubuntu 14.04 or Odroid-XU4)\n* Mavros \u0026 Mavros Extras installed\n* Rosserial Installed\n* Knowing how to create a ROS workspace\n\nInstall\n-----------\n\n* Create \u0026 source a workspace\n* Clone rosserial into the `src` folder of your catkin workspace\n* Copy laserpack folder into the `src` folder of your catkin workspace \n* Build your workspace :  `catkin_make` or `catkin build` \n* Build Arduino librairies \n\t* rosrun rosserial_Arduino make_librairies.py destination_folder # destination_folder can be `.` for **here** or `~` for **home**. There should be NO folder called ros_lib in the destination_folder\n\t* copy ros_lib folder to the Arduino librairies\n* Start/restart the Arduino IDE, build \u0026 upload the code\n* Edit the launch file from rosserial to change the Arduino Serial port(`roscd rosserial`, `nano launch/node_serial.launch`) from ttyACM0 to ttyACM1 or ttyUSB (depends on how the Arduino is detected)\n\nCheckList for fast start-up\n----------\n\n* Start the Linux embedded\n* Connect the PixHawk via a FTDI connector to TELEM1 or USB *NOT RECOMMANDED* (The USB connector is disabled by the PixHawk if there is no connection since 30 seconds (save power))\n* `$ roscore` # Start ROS main process\n* Connect the Arduino via the USB (Note : On the Odroid, there is a conflict using the Arduino \u0026 PixHawk on the same hub... The PixHawk shutdown \u0026 restart when the Arduino is removed. No explanation)\n* `$ roslaunch mavros px4.launch` # Start Mavros HAL(Hardware Abstraction Layer) service \n* `$ roslaunch rosserial_server node_serial.launch` # Listen to the Arduino, it will publish data to `/lasers/raw`\n* `$ rosrun laserpack position_algorithm.py` # Transform measurements to position and euler angles\n* `$ rosrun laserpack pixhawk_control.py` # Send positions to the PixHawk, Arm, Offboard, Setpoints\n\nArduino\n----------\n\n* Fritzer schema\n* Connect it\n\nArchitecture\n-----------\n\n* Roscore   : Main node\n* Mavros    : MAVLink abstraction layer (MAVLink over UART protocol)\n  - Publish to /mavros topics\n  - Subscribe to /mavros topics\n* Rosserial : Arduino abstraction layer (UART Standardized protocol)\n  - rosserial_python/message_definitions.py - gives definitions of the messages\n  - rosserial_python/serial_node.py - python uart listener\n  - rosserial_server/serial_node - C++ uart listener : Better efficiency\n  - Publish to /lasers/raw\n* laserpack : Custom messages definitions \u0026 script container\n  - laserpack/position_algorithm.py - Translate readings to position\n  \t- Subscribe to /lasers/raw  (laserpack::distance type)\n  \t- Subscribe to /mavros/imu/data (sensors_msgs::Imu type)\n  \t- Publish to /lasers/pose (sensors_msgs::PoseStamped type)\n  - laserpack/pixhawk_control.py\n    - Subscribe to /lasers/pose (sensors_msgs::PoseStamped type) - Gives the custom position we will send\n  \t- Subscribe to /mavros/imu/data (sensors_msgs::Imu type) - Get the PixHawk IMU\n    - Subscribe to /mavros/state (mavros_msgs::State type)\n    - Subscribe to /mavros/local_position/pose (sensors_msgs::PoseStamped type)\n  \t- Service to /mavros/cmd/arming (mavros_msgs::CommandBool type)\n    - Service to /mavros/set_mode (mavros_msgs::SetMode type)\n \t- Publish to /mavros/setpoint_position/local (sensors_msgs::PoseStamped type)\n \t- Publish to /mavros/mocap/pose (sensors_msgs::PoseStamped type)\n\nTodo\n-----------\n\n* Adapt Algorithm to get Euler angles from 6 measurments\n* Create a roslaunch that start everything\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexistm%2Findoor_position_lasers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexistm%2Findoor_position_lasers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexistm%2Findoor_position_lasers/lists"}