{"id":21444177,"url":"https://github.com/jack-development/pf_localisation","last_synced_at":"2025-07-26T17:09:38.856Z","repository":{"id":200479945,"uuid":"701306577","full_name":"Jack-Development/pf_localisation","owner":"Jack-Development","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-14T18:35:31.000Z","size":7504,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-19T05:06:04.152Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Jack-Development.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-10-06T11:15:14.000Z","updated_at":"2023-10-16T09:48:19.000Z","dependencies_parsed_at":null,"dependency_job_id":"3359874c-66a7-4727-aa4f-c4af10779b70","html_url":"https://github.com/Jack-Development/pf_localisation","commit_stats":null,"previous_names":["jack-development/pf_localisation"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Jack-Development/pf_localisation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jack-Development%2Fpf_localisation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jack-Development%2Fpf_localisation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jack-Development%2Fpf_localisation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jack-Development%2Fpf_localisation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Jack-Development","download_url":"https://codeload.github.com/Jack-Development/pf_localisation/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Jack-Development%2Fpf_localisation/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260690832,"owners_count":23047099,"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-23T02:16:31.080Z","updated_at":"2025-06-19T05:06:04.534Z","avatar_url":"https://github.com/Jack-Development.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PF Localisation Package (Skeleton Code)\n\n## Particle Filter Exercise\n\nThis package implements the particle filter localisation using sensor and motion update from the Pioneer P3-DX robot. The methods in `src/pf_localisation/pf.py` have to be completed correctly to run the node. Read the assignment lab notes for more instructions on how to complete these methods. You can also find documentation regarding each method in the source files.\n\n#### Note:\n\n* You need to make changes **ONLY** in `pf.py` file for completing the localisation package. If you want to change any of the inherited parameters (parameters inherited from the parent class `PFLocaliserBase`), it is best to do so from the child class itself (i.e. in `PFLocaliser` class in `pf.py`).\n\n* However, you may play with different values for parameters in the other files (eg. `sensor_model.py`) for conducting experiments.\n\n\n### Building Package:\n\n* Move package to your catkin workspace (`src` directory)\n* Rebuild catkin workspace \n        \n        catkin_make    # ----- run from root directory of catkin workspace\n\n* Compile laser_trace.cpp (provides laser ray tracing) as follows **if you are not using arm system(windows, unix...)**:\n\n        cd \u003ccatkin_ws\u003e/src/pf_localisation/src/laser_trace\n        ./compile.sh #You may have to '''chmod +x compile.sh'''\n\n* replace `./compile.sh` with `./compilearm.sh`  **if you are using arm system(m1 chip mac)**:\n\nIf correctly compiled, you should find `laser_trace.so` in the directory `\u003ccatkin_ws\u003e/src/pf_localisation/src/pf_localisation`.\nIf the ***code does not compile*** you need to install PythonBoost from https://github.com/boostorg/python. This requires the download and compiling of Boost and installation of Faber.\n\n### Running the node:\n\n#### On real robot:\n\n        roscore  # ----- not necessary if roslaunch is called before running any nodes with rosrun\n        roslaunch socspioneer p2os_laser.launch\n        roslaunch socspioneer teleop_joy.launch # ----- for teleoperation control (if implementing automatic collision avoidance node, run that instead)\n        rosrun map_server map_server \u003cpath_to_your_map_yaml_file\u003e\n        rosrun pf_localisation node.py    # ----- requires laser_trace, and completed pf.py methods.\n\n#### In simulated world:\n\nThe localisation node can be tested in stage simulation (without the need for robot).\n\n        roscore\n        rosrun map_server map_server \u003ccatkin_ws\u003e/map.yaml\n        rosrun stage_ros stageros \u003ccatkin_ws\u003e/src/socspioneer/data/meeting.world\n        roslaunch socspioneer keyboard_teleop.launch  # ---- run only if you want to move robot using keyboard \n        rosrun pf_localisation node.py    # ----- requires laser_trace, and completed pf.py methods.\n\n**Don't forget to make node.py executable by using ```chmod +x node.py```**\n\n### Published Topics:\n\nRunning the node successfully will publish the following topics:\n\n* `/map` \n* `/amcl_pose` \n* `/particle_cloud`\n\nAll of these can be visualised in RViz by adding the appropriate Views.\n\n\n### Advice:\n\n* Once you have a basic understanding of what you have to do in the `PFLocaliser` class of `pf.py` file, it is a good idea to look at its parent class `PFLocaliserBase` in `pf_base.py` to see how the other parts of the localisation algorithm is implemented. \n* You may also go through `sensor_model.py` to see how the sensor model is coded, and how the model update is implemented. The different parameter values that were empirically chosen can also be found here. \n* Read through `node.py` to understand how the node is impelemented to perform the update whenever new information is available. You can also see how `rospy logging` is used for logging useful information to console. You may also use this for debugging purposes.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-development%2Fpf_localisation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjack-development%2Fpf_localisation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjack-development%2Fpf_localisation/lists"}