Embedded Software Engineer at AgriRobot
Kongens Lyngby, Capital Region of Denmark, Denmark
Sep 29, 2025
Computerkonsulentbistand og forvaltning af computerfaciliteter
Dette job er ikke blevet analyseret af vores AI-vurderingssystem. Klik på knappen nedenfor for at få en AI-drevet match score baseret på dine præferencer.
# Job Skill Enhancement System
## CORE INSTRUCTION:
You are an AI that extracts and identifies coding languages and frameworks from job descriptions. Your goal is to find ALL relevant technical skills mentioned in the job posting, even if they're mentioned in different ways or aliases.
## INPUT DATA:
{
"job": {"job_id":5068,"title":"Embedded Software Engineer at AgriRobot","company_name":"AgriRobot","description":"About the job\n\nDo you want to join a fast-moving startup enabling safe autonomy for the robot revolution in agriculture? \n\n\n\n\nOur mission is to deliver state-of-the-art perception and AI solutions to ensure the safe operation of agricultural robots. The emphasis on renewable energy, reduced chemical usage, and ongoing labor shortages are collectively propelling this transformation. \n\n\n\n\nAs an Embedded Software Engineer at AgriRobot, you will be responsible for integrating our advanced safety perception robotics stack onto high-performance embedded computing hardware, ensuring the reliability, safety, and performance of our autonomous systems. \n\n\n\n\nYour Responsibilities \n\n\n\n\nIn this role, you will: \n\n\n\n\nIntegrate our robotics software stack onto high-performance embedded controllers running real-time operating systems (RTOS). \nOptimize communication middleware (e.g., DDS, IPC, shared memory) to ensure real-time, high-throughput data flow for our robotics microservices. \nDesign and implement virtualized, mixed-criticality software partitions to deploy our safety software, combining Linux and RTOS. \nDevelop high-performance, safety-critical C and C++ code for resource-constrained, multi-threaded environments. \nIntegrate and maintain build systems and cross-compilation toolchains for our C\/C++ codebase. \nIntegrate device drivers and Board Support Packages (BSPs) to enable new hardware capabilities. \nImplement and debug communication protocols between embedded controllers, utilizing CAN, Ethernet (TCP\/IP), and other networking standards. \nCollaborate closely with our robotics and machine learning teams to define software requirements and ensure seamless system integration. \nDiagnose and resolve complex, low-level hardware-software issues using various debugging tools (GDB, JTAG\/SWD). \nDesign and implement CI\/CD pipelines for our robotics platforms. \n\n \n\nYour Qualifications \n\nYou likely have a B.Sc. or M.Sc. in Computer Engineering, Electrical Engineering, or a related field, with significant experience in embedded software development. \n\n\n\n\nEssential qualifications include: \n\n\n\n\nProven experience with POSIX real-time operating systems (RTOS) like QNX, NuttX, or Zephyr, including deep knowledge of multithreading and scheduling. \nProficiency in modern C and C++, and applying software architecture and design patterns to complex embedded systems. \nStrong experience with build systems such as CMake, Make, or Bazel. \nStrong understanding of inter-process communication (IPC) and communication middleware concepts for distributed systems. \nStrong background in Linux development for embedded systems, including system configuration and user-space application development. \nHands-on experience with low-level debugging using tools like GDB and hardware probes (JTAG\/SWD). \nProficiency with communication protocols such as Ethernet (TCP\/IP, UDP) and CAN bus. \nExperience with CI\/CD workflows (e.g., GitLab CI) and scripting (Python, Bash) for automating embedded software builds and testing. \nExcellent problem-solving skills and the ability to work independently in a fast-paced environment. \n\n \n\nIt is an advantage to have: \n\nDirect experience with robotics applications and the Robot Operating System (ROS\/ROS 2). \nFamiliarity with virtualization technologies and hypervisors for deploying mixed-criticality safety systems. \nKnowledge of functional safety standards (e.g., ISO 25119, ISO 26262, IEC 61508). \nExperience with the deployment and optimization of machine learning (ML) models on AI inference accelerators. \n\n \n\n\n\n\nIf you are excited about contributing to the future of agricultural robotics by building robust and efficient infrastructure, we'd love to hear from you. \n\n\n\n\nWhat we offer \n\n\n\n\nAn exciting opportunity to join a robotics startup with high ambitions and strong traction \nYou will be close to the product and have considerable influence on your own tasks and the whole project \nYou will be a part of the vibrant and innovative environment at DTU Sciencepark, Kgs. Lyngby, where our office is located. We are also open to remote work from Costa Rica.\n\nFor further info please contact us via the LinkedIn job post or directly to CEO Tommy Ertbølle Madsen via LinkedIn. You can find more info about us here on https:\/\/www.linkedin.com\/company\/agrirobot\/ and our website https:\/\/agrirobot.ai\/ \n\nWe are continuously evaluating applications. \n\n\n\n\nPlease apply via the LinkedIn system and attach your CV and a cover letter.","brief_summary_of_job":null,"existing_skills_from_job":["Hybrid","Full-time","Robotics","Artificial Intelligence (AI)","Embedded Systems","Machine Learning","Internet Protocol (IP)","Problem Solving","Operating Systems","C++","IT Integration","C (Programming Language)","Bash","Python","Git","GitLab","CI\/CD"],"existing_skills_from_database":[]},
"coding_categories": {"languages":["Bash","C","C#","C++","CSS","Clojure","Dart","Elixir","Go","Groovy","Haskell","HTML","Java","JavaScript","Julia","Kotlin","Lua","MATLAB","Objective-C","Perl","PHP","PowerShell","Python","R","Ruby","Rust","Sass","Scala","Swift","TypeScript"],"frameworks":[".NET","Angular","Apache Spark","ASP.NET","Backbone.js","Bootstrap","CodeIgniter","Django","Ember.js","Express","FastAPI","Flask","Flutter","Hadoop","Ionic","jQuery","Laravel","Livewire","Meteor","NestJS","Next.js","Node.js","Nuxt.js","Phoenix","PHPUnit","PyTorch","React","React Native","Ruby on Rails","Spring Boot","Svelte","Symfony","Tailwind CSS","TensorFlow","Vue.js","Xamarin","Alpine.js","Filament","WordPress"],"databases":["MySQL","PostgreSQL","Redis","MongoDB","DynamoDB","MariaDB","NoSQL","Oracle","BigQuery","Elasticsearch","SQL","SQL Server","SQLite","Cassandra","CouchDB","Neo4j","InfluxDB","CockroachDB"],"tools":["Git","GitHub","GitLab","Bitbucket","Docker","Kubernetes","CI\/CD","Jenkins","Kafka","RabbitMQ","Amazon SQS","AMQP","PubSub","REST API","RESTful APIs","GraphQL","AWS","Azure","GCP","Terraform","Ansible","Puppet","Chef","Vagrant","Vault","Consul","Prometheus","Grafana","ELK Stack","Splunk"],"skills":["English","Danish","Communication","Full-stack development","Back-end development","Front-end development","Cloud computing","DevOps","Microsoft Excel","PowerBI","Power Platform","Agile","Scrum","Problem-solving","Team collaboration","Physical presence","Remote work","Hybrid work"],"colors":{"languages":"blue","frameworks":"purple","databases":"orange","tools":"indigo"}},
"skill_aliases": {"bash":"Bash","c":"C","c plus plus":"C++","C plus plus":"C++","c sharp":"C#","C sharp":"C#","c#":"C#","c++":"C++","clojure":"Clojure","cpp":"C++","dart":"Dart","elixir":"Elixir","go":"Go","golang":"Go","Golang":"Go","groovy":"Groovy","haskell":"Haskell","java":"Java","java script":"JavaScript","Java script":"JavaScript","javascript":"JavaScript","Javascript":"JavaScript","js":"JavaScript","JS":"JavaScript","es5":"JavaScript","ES5":"JavaScript","es6":"JavaScript","ES6":"JavaScript","julia":"Julia","kotlin":"Kotlin","lua":"Lua","matlab":"MATLAB","Matlab":"MATLAB","objective c":"Objective-C","Objective C":"Objective-C","objective-c":"Objective-C","objc":"Objective-C","ObjC":"Objective-C","obj-c":"Objective-C","Obj-C":"Objective-C","perl":"Perl","php":"PHP","Php":"PHP","powershell":"PowerShell","Power Shell":"PowerShell","python":"Python","py":"Python","Py":"Python","phyton":"Python","r":"R","ruby":"Ruby","rust":"Rust","scala":"Scala","swift":"Swift","typescript":"TypeScript","Typescript":"TypeScript","ts":"TypeScript","TS":"TypeScript","mysql":"MySQL","postgresql":"PostgreSQL","postgres":"PostgreSQL","mongodb":"MongoDB","mongo":"MongoDB","redis":"Redis","sqlite":"SQLite","oracle":"Oracle","mssql":"SQL Server","sql server":"SQL Server","dynamodb":"DynamoDB","dynamo db":"DynamoDB","mariadb":"MariaDB","maria db":"MariaDB","nosql":"NoSQL","no sql":"NoSQL","bigquery":"BigQuery","big query":"BigQuery","elasticsearch":"Elasticsearch","elastic search":"Elasticsearch","cassandra":"Cassandra","couchdb":"CouchDB","couch db":"CouchDB","neo4j":"Neo4j","neo 4j":"Neo4j","influxdb":"InfluxDB","influx db":"InfluxDB","cockroachdb":"CockroachDB","cockroach db":"CockroachDB","aws":"AWS","amazon web services":"AWS","azure":"Azure","microsoft azure":"Azure","gcp":"GCP","google cloud platform":"GCP","google cloud":"GCP",".Net":".NET","angular":"Angular","angular js":"Angular","Angular js":"Angular","angularjs":"Angular","AngularJS":"Angular","apache spark":"Apache Spark","asp net":".NET","ASP net":".NET","asp.net":"ASP.NET","ASP.NET":".NET","asp.net core":".NET","ASP.NET Core":".NET","backbone":"Backbone.js","BackboneJS":"Backbone.js","backbone js":"Backbone.js","backbonejs":"Backbone.js","bootstrap":"Bootstrap","Bootstrap framework":"Bootstrap","twitter bootstrap":"Bootstrap","Twitter Bootstrap":"Bootstrap","code igniter":"CodeIgniter","codeigniter":"CodeIgniter","django":"Django","ember":"Ember.js","ember js":"Ember.js","emberjs":"Ember.js","EmberJS":"Ember.js","express":"Express","express.js":"Express","Express.js":"Express","expressjs":"Express","ExpressJS":"Express","fast api":"FastAPI","Fast api":"FastAPI","fastapi":"FastAPI","flask":"Flask","flutter":"Flutter","hadoop":"Hadoop","Hadoop":"Hadoop","ionic":"Ionic","Ionic framework":"Ionic","ionic framework":"Ionic","jquery":"jQuery","JQuery":"jQuery","JQUERY":"jQuery","laravel":"Laravel","meteor":"Meteor","meteor js":"Meteor","meteorjs":"Meteor","MeteorJS":"Meteor","nestjs":"NestJS","nest js":"NestJS","Nest JS":"NestJS","Nestjs":"NestJS","next js":"Next.js","Next js":"Next.js","next.js":"Next.js","nextjs":"Next.js","NextJS":"Next.js","node":"Node.js","Node":"Node.js","node.js":"Node.js","nodejs":"Node.js","NodeJS":"Node.js","nuxt js":"Nuxt.js","Nuxt js":"Nuxt.js","nuxt.js":"Nuxt.js","nuxtjs":"Nuxt.js","NuxtJS":"Nuxt.js","phoenix":"Phoenix","Phoenix framework":"Phoenix","pytorch":"PyTorch","Pytorch":"PyTorch","torch":"PyTorch","Torch":"PyTorch","react":"React","react.js":"React","React.js":"React","reactjs":"React","ReactJS":"React","react native":"React Native","ReactNative":"React Native","reactnative":"React Native","rn":"React Native","RN":"React Native","rails":"Ruby on Rails","Rails":"Ruby on Rails","ror":"Ruby on Rails","ROR":"Ruby on Rails","ruby on rails":"Ruby on Rails","Ruby On Rails":"Ruby on Rails","spark":"Apache Spark","Spark":"Apache Spark","spring":"Spring Boot","Spring":"Spring Boot","spring boot":"Spring Boot","Spring Boot":"Spring Boot","spring framework":"Spring Boot","Spring Framework":"Spring Boot","SpringBoot":"Spring Boot","springboot":"Spring Boot","svelte":"Svelte","symfony":"Symfony","tailwind":"Tailwind CSS","Tailwind":"Tailwind CSS","tailwind css":"Tailwind CSS","Tailwind Css":"Tailwind CSS","tailwindcss":"Tailwind CSS","TailwindCSS":"Tailwind CSS","tensorflow":"TensorFlow","Tensorflow":"TensorFlow","tensor flow":"TensorFlow","Vue":"Vue.js","vue":"Vue.js","vue js":"Vue.js","vue.js":"Vue.js","vuejs":"Vue.js","VueJS":"Vue.js","xamarin":"Xamarin","Xamarin Forms":"Xamarin","Xamarin.forms":"Xamarin","livewire":"Livewire","phpunit":"PHPUnit","alpine":"Alpine.js","alpine js":"Alpine.js","alpinejs":"Alpine.js","filament":"Filament","docker":"Docker","kubernetes":"Kubernetes","k8s":"Kubernetes","github":"GitHub","gitlab":"GitLab","bitbucket":"Bitbucket","terraform":"Terraform","puppet":"Puppet","chef":"Chef","git":"Git","jenkins":"Jenkins","kafka":"Kafka","rabbitmq":"RabbitMQ","amazon sqs":"Amazon SQS","amqp":"AMQP","pubsub":"PubSub","rest api":"REST API","restful api":"RESTful APIs","restful apis":"RESTful APIs","graphql":"GraphQL","ansible":"Ansible","vagrant":"Vagrant","vault":"Vault","consul":"Consul","prometheus":"Prometheus","grafana":"Grafana","elk stack":"ELK Stack","splunk":"Splunk","scrum":"Scrum","agile":"Agile","kanban":"Kanban","devops":"DevOps","ci\/cd":"CI\/CD","tdd":"TDD","bdd":"BDD","linux":"Linux","windows":"Windows","macos":"macOS","ubuntu":"Ubuntu","centos":"CentOS","debian":"Debian","junit":"JUnit","pytest":"PyTest","jest":"Jest","mocha":"Mocha","cypress":"Cypress","selenium":"Selenium","html":"HTML","HTML":"HTML","html5":"HTML","HTML5":"HTML","css":"CSS","CSS":"CSS","css3":"CSS","CSS3":"CSS","sass":"Sass","scss":"Sass","SCSS":"Sass","less":"Less","LESS":"Less","webpack":"Webpack","gulp":"Gulp","npm":"npm","yarn":"Yarn","sql":"SQL","full time":"Fuldtid","full-time":"Fuldtid","fuldtid":"Fuldtid","part time":"Deltid","part-time":"Deltid","deltid":"Deltid","contract":"Kontrakt","kontrakt":"Kontrakt","remote":"Fjernarbejde","fjernarbejde":"Fjernarbejde","hybrid":"Hybridarbejde","hybridarbejde":"Hybridarbejde","on-site":"Fysisk tilstedeværelse","onsite":"Fysisk tilstedeværelse","fysisk tilstedeværelse":"Fysisk tilstedeværelse"}
}
## TASK:
1. **Extract ALL coding languages and frameworks** mentioned in the job description
2. **Use the skill_aliases mapping** to normalize skill names (e.g., "JS" → "JavaScript", "React.js" → "React")
3. **Only include skills from the coding_categories** (languages and frameworks)
4. **Avoid duplicates** - if "JavaScript" and "JS" are both mentioned, only include "JavaScript"
5. **Be thorough** - look for skills mentioned in:
- Job title
- Job description
- Brief summary
- Requirements sections
- Nice-to-have sections
## SKILL CATEGORIES TO EXTRACT:
- **Languages**: Programming languages (PHP, Python, JavaScript, Java, C#, Go, Rust, etc.)
- **Frameworks**: Web frameworks and libraries (Laravel, React, Vue.js, Angular, Django, Spring Boot, etc.)
- **Databases**: Database systems and data stores (MySQL, PostgreSQL, Redis, MongoDB, DynamoDB, etc.)
- **Tools**: Development tools and infrastructure (Git, Docker, AWS, CI/CD, Jenkins, Kafka, etc.)
## EXCLUSION RULES:
- Do NOT extract general skills (communication, languages like English, etc.)
- Do NOT extract business skills (Excel, PowerBI for non-technical roles)
- Do NOT extract work arrangements (remote, physical presence)
- Do NOT include methodologies (Agile, Scrum, etc.) unless specifically technical
- Do NOT include skills already in existing_skills_from_database
## OUTPUT FORMAT:
Return ONLY valid JSON in this exact structure:
{
"job_id": <integer>,
"extracted_skills": [
{
"skill_name": "<normalized_skill_name>",
"category": "<languages|frameworks|databases|tools>",
"confidence": <integer 0-100>,
"mentioned_as": ["<original_mention_1>", "<original_mention_2>"],
"context": "<brief_context_where_found>"
}
],
"reasoning": {
"total_skills_found": <integer>,
"skills_by_category": {
"languages": ["<skill1>", "<skill2>"],
"frameworks": ["<skill1>", "<skill2>"],
"databases": ["<skill1>", "<skill2>"],
"tools": ["<skill1>", "<skill2>"]
},
"duplicates_removed": ["<original_mention> → <normalized_name>"],
"excluded_skills": ["<skill>", "<reason>"]
},
"confidence": <integer 0-100>
}
Return nothing outside the JSON object.
{
"job_id": 5068,
"extracted_skills": [
{
"skill_name": "C",
"category": "languages",
"confidence": 100,
"mentioned_as": ["C"],
"context": "Develop high-performance, safety-critical C and C++ code for resource-constrained, multi-threaded environments."
},
{
"skill_name": "C++",
"category": "languages",
"confidence": 100,
"mentioned_as": ["C++", "C plus plus", "c plus plus"],
"context": "Develop high-performance, safety-critical C and C++ code for resource-constrained, multi-threaded environments."
},
{
"skill_name": "Python",
"category": "languages",
"confidence": 100,
"mentioned_as": ["Python"],
"context": "Experience with CI/CD workflows (e.g., GitLab CI) and scripting (Python, Bash) for automating embedded software builds and testing."
},
{
"skill_name": "Bash",
"category": "languages",
"confidence": 100,
"mentioned_as": ["Bash"],
"context": "Experience with CI/CD workflows (e.g., GitLab CI) and scripting (Python, Bash) for automating embedded software builds and testing."
},
{
"skill_name": "Linux",
"category": "frameworks",
"confidence": 100,
"mentioned_as": ["Linux"],
"context": "Strong background in Linux development for embedded systems, including system configuration and user-space application development."
},
{
"skill_name": "CI/CD",
"category": "tools",
"confidence": 100,
"mentioned_as": ["CI/CD", "CI\/CD"],
"context": "Design and implement CI/CD pipelines for our robotics platforms."
},
{
"skill_name": "GitLab",
"category": "tools",
"confidence": 100,
"mentioned_as": ["GitLab CI"],
"context": "Experience with CI/CD workflows (e.g., GitLab CI) and scripting (Python, Bash) for automating embedded software builds and testing."
},
{
"skill_name": "GDB",
"category": "tools",
"confidence": 100,
"mentioned_as": ["GDB"],
"context": "Diagnose and resolve complex, low-level hardware-software issues using various debugging tools (GDB, JTAG/SWD)."
},
{
"skill_name": "JTAG",
"category": "tools",
"confidence": 100,
"mentioned_as": ["JTAG", "JTAG\/SWD"],
"context": "Diagnose and resolve complex, low-level hardware-software issues using various debugging tools (GDB, JTAG/SWD)."
},
{
"skill_name": "TCP/IP",
"category": "tools",
"confidence": 100,
"mentioned_as": ["TCP\/IP"],
"context": "Implement and debug communication protocols between embedded controllers, utilizing CAN, Ethernet (TCP/IP), and other networking standards."
},
{
"skill_name": "CAN",
"category": "tools",
"confidence": 100,
"mentioned_as": ["CAN"],
"context": "Implement and debug communication protocols between embedded controllers, utilizing CAN, Ethernet (TCP/IP), and other networking standards."
}
],
"reasoning": {
"total_skills_found": 10,
"skills_by_category": {
"languages": ["C", "C++", "Python", "Bash"],
"frameworks": ["Linux"],
"databases": [],
"tools": ["CI/CD", "GitLab", "GDB", "JTAG", "TCP/IP", "CAN"]
},
"duplicates_removed": [],
"excluded_skills": []
},
"confidence": 100
}
Brug avanceret AI (GPT-4o) til at generere en personaliseret ansøgning på dansk til denne jobansøgning. Brevet vil være skræddersyet til din profil, de specifikke jobkrav og omfattende virksomhedsinformation for maksimal effekt.
About the job
Do you want to join a fast-moving startup enabling safe autonomy for the robot revolution in agriculture?
Our mission is to deliver state-of-the-art perception and AI solutions to ensure the safe operation of agricultural robots. The emphasis on renewable energy, reduced chemical usage, and ongoing labor shortages are collectively propelling this transformation.
As an Embedded Software Engineer at AgriRobot, you will be responsible for integrating our advanced safety perception robotics stack onto high-performance embedded computing hardware, ensuring the reliability, safety, and performance of our autonomous systems.
Your Responsibilities
In this role, you will:
Integrate our robotics software stack onto high-performance embedded controllers running real-time operating systems (RTOS).
Optimize communication middleware (e.g., DDS, IPC, shared memory) to ensure real-time, high-throughput data flow for our robotics microservices.
Design and implement virtualized, mixed-criticality software partitions to deploy our safety software, combining Linux and RTOS.
Develop high-performance, safety-critical C and C++ code for resource-constrained, multi-threaded environments.
Integrate and maintain build systems and cross-compilation toolchains for our C/C++ codebase.
Integrate device drivers and Board Support Packages (BSPs) to enable new hardware capabilities.
Implement and debug communication protocols between embedded controllers, utilizing CAN, Ethernet (TCP/IP), and other networking standards.
Collaborate closely with our robotics and machine learning teams to define software requirements and ensure seamless system integration.
Diagnose and resolve complex, low-level hardware-software issues using various debugging tools (GDB, JTAG/SWD).
Design and implement CI/CD pipelines for our robotics platforms.
Your Qualifications
You likely have a B.Sc. or M.Sc. in Computer Engineering, Electrical Engineering, or a related field, with significant experience in embedded software development.
Essential qualifications include:
Proven experience with POSIX real-time operating systems (RTOS) like QNX, NuttX, or Zephyr, including deep knowledge of multithreading and scheduling.
Proficiency in modern C and C++, and applying software architecture and design patterns to complex embedded systems.
Strong experience with build systems such as CMake, Make, or Bazel.
Strong understanding of inter-process communication (IPC) and communication middleware concepts for distributed systems.
Strong background in Linux development for embedded systems, including system configuration and user-space application development.
Hands-on experience with low-level debugging using tools like GDB and hardware probes (JTAG/SWD).
Proficiency with communication protocols such as Ethernet (TCP/IP, UDP) and CAN bus.
Experience with CI/CD workflows (e.g., GitLab CI) and scripting (Python, Bash) for automating embedded software builds and testing.
Excellent problem-solving skills and the ability to work independently in a fast-paced environment.
It is an advantage to have:
Direct experience with robotics applications and the Robot Operating System (ROS/ROS 2).
Familiarity with virtualization technologies and hypervisors for deploying mixed-criticality safety systems.
Knowledge of functional safety standards (e.g., ISO 25119, ISO 26262, IEC 61508).
Experience with the deployment and optimization of machine learning (ML) models on AI inference accelerators.
If you are excited about contributing to the future of agricultural robotics by building robust and efficient infrastructure, we'd love to hear from you.
What we offer
An exciting opportunity to join a robotics startup with high ambitions and strong traction
You will be close to the product and have considerable influence on your own tasks and the whole project
You will be a part of the vibrant and innovative environment at DTU Sciencepark, Kgs. Lyngby, where our office is located. We are also open to remote work from Costa Rica.
For further info please contact us via the LinkedIn job post or directly to CEO Tommy Ertbølle Madsen via LinkedIn. You can find more info about us here on https://www.linkedin.com/company/agrirobot/ and our website https://agrirobot.ai/
We are continuously evaluating applications.
Please apply via the LinkedIn system and attach your CV and a cover letter.